Reference by pointer что за ошибка
Добрый день! Уважаемые читатели и гости одного из крупнейших IT порталов России Pyatilistnik.org. В прошлый раз мы с вами рассмотрели ситуацию по настройке роутера Mikrotik для малого офиса. Офис работает и в его жизненном цикле могут возникать разного рода проблемы, одной из такой ситуаций, было появление синего экрана reference_by_pointer с кодом 0x00000018. Давайте разбираться в чем дело и как, это исправить.
Описание ситуации
И так у меня есть RDS ферма построенная на Windows Server 2012 R2, в какой-то момент система мониторинга прислала уведомление, о том что один из узлов не доступен. Так как у меня, это виртуальная машина) на ESXI 6.5 и крутящейся на сервере Dell R740, то я подключился к консоли и увидел синий экран с такой вот формулировкой:

Анализ синего экрана reference_by_pointer 0x00000018
Когда моя виртуальная машина загрузилась, то я увидел сообщение, что с компьютером возникла проблема, был создан файл минидампа и полного дампа MEMORY.DMP. Я не поленился и отправил сведения компании Microsoft.

Перед тем, как производить анализ дампов, я всегда просматриваю события в логах Windows. В журнале «Система» я обнаружил ошибку с кодом ID 1001:

Как видно из события ID 1001 с кодом 0x00000018, вся информация была записана в дамп по пути C:\Windows\MEMORY.DMP. Ранее я вам рассказывал, как производить анализ дампа и находить причины синего экрана, советую почитать. Там мы использовали утилиту Microsoft Kernel Debugger. Открываем Microsoft Kernel Debugger и скармливаем по очереди ваши файлы дампов, для начала я посмотрю мини дамп.
GetUlongPtrFromAddress: unable to read from fffff8011c3c8308
KEY_VALUES_STRING: 1
PROCESSES_ANALYSIS: 1
SERVICE_ANALYSIS: 1
STACKHASH_ANALYSIS: 1
TIMELINE_ANALYSIS: 1
DUMP_CLASS: 1
DUMP_QUALIFIER: 400
BUILD_VERSION_STRING: 9600.19377.amd64fre.winblue_ltsb_escrow.190524-1500
SYSTEM_MANUFACTURER: VMware, Inc.
VIRTUAL_MACHINE: VMware
SYSTEM_PRODUCT_NAME: VMware Virtual Platform
SYSTEM_VERSION: None
BIOS_VENDOR: Phoenix Technologies LTD
BIOS_VERSION: 6.00
BIOS_DATE: 12/12/2018
BASEBOARD_MANUFACTURER: Intel Corporation
BASEBOARD_PRODUCT: 440BX Desktop Reference Platform
BASEBOARD_VERSION: None
DUMP_TYPE: 2
BUGCHECK_P1: 0
BUGCHECK_P2: ffffe80208a4e700
BUGCHECK_P3: 10
BUGCHECK_P4: ffffc0024a26e1f1
CPU_COUNT: 10
CPU_MHZ: bb1
CPU_VENDOR: GenuineIntel
CPU_FAMILY: 6
CPU_MODEL: 55
CPU_STEPPING: 4
CPU_MICROCODE: 6,55,4,0 (F,M,S,R) SIG: 200005E’00000000 (cache) 200005E’00000000 (init)
ANALYSIS_SESSION_TIME: 11-05-2019 16:25:03.0325
ANALYSIS_VERSION: 10.0.18362.1 amd64fre
LAST_CONTROL_TRANSFER: from fffff8011c1dd91d to fffff8011c1ba3a0
STACK_TEXT:
ffffd000`311b7788 fffff801`1c1dd91d : 00000000`00000018 00000000`00000000 ffffe802`08a4e700 00000000`00000010 : nt!KeBugCheckEx
ffffd000`311b7790 fffff801`1c0c3042 : 00000000`00000002 00000000`00000004 ffffe802`08a4e700 fffff800`557020dd : nt! ?? ::FNODOBFM::`string’+0xe82d
ffffd000`311b77d0 fffff801`1c0c291a : 00000000`0000eb01 00000000`00010224 00000000`00000001 ffffe802`0a7c8080 : nt!ExpApplyPriorityBoost+0x16a
ffffd000`311b7840 fffff801`1c0d03ea : ffffe802`07b51b70 ffffe801`ff4ee230 ffffe802`00000000 fffff801`00000000 : nt!ExpWaitForResource+0xea
ffffd000`311b78f0 fffff800`55732a67 : 00000000`00000002 00000000`00000000 ffffd000`311b7b30 00000000`c0000055 : nt!ExAcquireResourceExclusiveLite+0x1da
ffffd000`311b7960 fffff800`55740b5e : ffffc002`51d7c010 ffffe000`d13cd601 ffffe000`d67fab00 ffffe000`d67fa790 : rdbss!__RxAcquireFcb+0xe7
ffffd000`311b79e0 fffff800`563a6a17 : ffffe000`d67fa790 ffffe000`d67f9010 00000000`00000001 fffff800`56382c01 : rdbss!RxFinalizeConnection+0x21e
ffffd000`311b7aa0 fffff800`563a07e1 : ffffe802`09084010 ffffe802`0a799580 ffffe000`d13cd410 ffffe802`0a799580 : rdpdr!DrDeleteConnection+0xbf
ffffd000`311b7ae0 fffff800`5574b474 : ffffe802`09084010 ffffe802`09084010 ffffe802`0a799580 ffffe000`d13cd410 : rdpdr! ?? ::NNGAKEGL::`string’+0x4961
ffffd000`311b7b60 fffff800`557332f0 : ffffe802`0a7996e0 ffffe802`0a799580 ffffe802`0a799580 ffffe801`f5cc51c0 : rdbss!RxXXXControlFileCallthru+0xe4
ffffd000`311b7ba0 fffff800`55700cea : ffffe802`0a799580 fffff800`55725c80 01d593c6`037ea5e1 00007ff7`f3f6a000 : rdbss!RxCommonDevFCBFsCtl+0xb0
ffffd000`311b7c00 fffff800`5573128d : 00000000`00000000 00000000`00000000 00000000`00000000 fffff800`54d66ab9 : rdbss!RxFsdCommonDispatch+0x4fa
ffffd000`311b7d80 fffff800`56390175 : ffffc002`19f1e050 00000000`00000000 fffff800`5638c010 ffffd000`311b7ea8 : rdbss!RxFsdDispatch+0xed
ffffd000`311b7df0 fffff800`54e5a4c5 : ffffe802`0a0facb0 00000000`00000000 ffffe802`0a799580 ffffe801`f5cc51c0 : rdpdr!DrPeekDispatch+0x175
ffffd000`311b7ea0 fffff800`54e5a6a2 : ffffc001`cb6fe1c0 fffff800`54e51000 ffffe000`d191db80 00000000`00000000 : mup!MupiCallUncProvider+0x1b5
ffffd000`311b7f10 fffff800`54e5aa32 : ffffe802`0a799580 ffffd000`311b7fe0 00000000`00000000 ffffd000`311b7f98 : mup!MupStateMachine+0xd2
ffffd000`311b7f50 fffff800`541a30da : ffffe802`0a893250 ffffe802`0a0facb0 00000000`00000800 ffffd000`311b7fa8 : mup!MupFsControl+0xf6
ffffd000`311b7f90 fffff800`541cb821 : ffffd000`311b8050 ffffe000`d1c410a0 ffffe802`0a799728 ffffe802`0a799580 : fltmgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x25a
ffffd000`311b8030 fffff801`1c4ff0af : 00000000`00000002 ffffd000`311b8111 ffffe802`0a7e72b0 0000001e`00100001 : fltmgr!FltpFsControl+0x111
ffffd000`311b8090 fffff801`1c500018 : ffffe802`0a7e7204 ffffe802`0a7e72b0 ffffc002`3d76d218 ffffe802`0a7e72b0 : nt!IopSynchronousServiceTail+0x32b
ffffd000`311b8160 fffff801`1c4b660a : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!IopXxxControlFile+0xdb8
ffffd000`311b82a0 fffff801`1c1ca2a3 : 00000000`00000102 ffffd000`311b8358 00000000`00000000 ffffe000`00000001 : nt!NtFsControlFile+0x56
ffffd000`311b8310 00007ffd`5c670aea : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
000000e8`227fe478 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffd`5c670aea

Далее я наблюдаю имя сбойного модуля MODULE_NAME: rdbss
FOLLOWUP_IP:
rdbss!__RxAcquireFcb+e7
fffff800`55732a67 440fb6f0 movzx r14d,al
Ошибка проверки 0x18: REFERENCE_BY_POINTER
REFERENCE_BY_POINTER проверка ошибок имеет значение 0x00000018. Это означает, что количество ссылок объекта недопустимо для текущего состояния объекта.
Этот раздел предназначен для программистов. Если вы являетесь клиентом, который получил синий код ошибки экрана при использовании компьютера, см. статью Устранение ошибок на синем экране.
Параметры REFERENCE_BY_POINTER
Тип объекта объекта, значение счетчика ссылок которого меньше.
Объект, значение счетчика ссылок которого меньше.
Причина
Недопустимый счетчик ссылок объекта для текущего состояния объекта. Каждый раз, когда драйвер использует указатель на объект, драйвер вызывает подпрограмму ядра для увеличения числа ссылок объекта на единицу. Когда драйвер выполняется с помощью указателя, драйвер вызывает другую подпрограмму ядра для уменьшения числа ссылок на единицу.
Драйверы должны соответствовать вызовам подпрограмм, которые увеличивают (ссылаются) и уменьшают(разыменование) Счетчикссылок. Эта проверка ошибок вызвана несогласованностью в счетчике ссылок объекта. Как правило, несоответствие вызвано драйвером, который слишком много раз уменьшает число ссылок объекта, делая лишние вызовы, которые отменяют ссылку на объект. Эта проверка ошибок может возникать из-за того, что счетчик ссылок объекта становится равным нулю, пока еще открыты дескрипторы объекта. Это также может произойти, когда счетчик ссылок объекта становится меньше нуля, независимо от наличия открытых дескрипторов объекта.
Решение
Убедитесь, что драйвер соответствует вызовам подпрограмм, увеличивающих и уменьшающих число ссылок объекта. Убедитесь, что драйвер не выполняет дополнительные вызовы подпрограмм, которые отменяют ссылку на объект (см. параметр 2).
Для анализа этой проблемы можно использовать отладчик. дополнительные сведения см. в разделе анализ аварийного дампа с помощью Windows отладчики (WinDbg). Расширение отладки » . Analyze » отображает сведения о проверке ошибок и может быть полезным при определении основной причины.
Чтобы найти маркер и число указателей на объект, используйте команду ! Object Debugger.
KD > ! адрес объекта
Где Address — это адрес объекта, указанного в параметре 2.
Вы также можете установить точку останова в коде, вызвавшем этот код останова, и попытаться выполнить один шаг вперед к неисправному коду.
если вы не намерены использовать отладчик Windows для решения этой проблемы, можно использовать некоторые основные методы устранения неполадок.
проверьте системный журнал в Просмотр событий на наличие дополнительных сообщений об ошибках, которые могут помочь определить устройство или драйвер, вызвавшие эту проверку на наличие ошибок.
Если в сообщении об ошибке указан драйвер, отключите его или обратитесь к изготовителю за обновлениями драйверов.
Убедитесь, что новое установленное оборудование совместимо с установленной версией Windows. например, можно получить сведения о требуемом оборудовании в спецификациях Windows 10.
Дополнительные общие сведения об устранении неполадок см. в разделе данные синим экраном.
Как убрать REFERENCE_BY_POINTER (0x00000018)?

На компьютере или ноутбуке под управлением Windows появился «синий экран смерти»? После появления сообщения « REFERENCE_BY_POINTER » ( 0x00000018) система перезагружается? Ищите как исправить 0x00000018: « REFERENCE_BY_POINTER »?
Как просмотреть информацию об ошибках, исправить ошибки в Windows 10, 8 или 7

Причины появления ошибки
- На жестком диске компьютера или ноутбука не достаточно места. Для правильной работы ОС Windows 10 на системном диске должно быть свободно 2 — 10 ГБ.
- На компьютер был установлен не совместимый BIOS или прошивка была повреждена.
- Установлены не совместимые с ОС драйвера устройств.
- Реестр Windows был поврежден или удален. Возможно в результате очистки были удалены системные ключи реестра.
- Ативирусное программное обеспечение или компьютерные вирусы могут заблокировать системные файлы или удалить важные ключи реестра.
- В результате ошибок в работе программы для резервного копирования.
- В результате обновления ОС Windows.
Актуально для ОС: Windows 10, Windows 8.1, Windows Server 2012, Windows 8, Windows Home Server 2011, Windows 7 (Seven), Windows Small Business Server, Windows Server 2008, Windows Home Server, Windows Vista, Windows XP, Windows 2000, Windows NT.
Вот несколько способов исправления ошибки « REFERENCE_BY_POINTER »:
Восстановите удаленные файлы
Часто появление BSoD ошибок приводит к утери важных файлов. Блокировка файлов компьютерными вирусами, ошибки в работе программ для резервного копирования, повреждение или перезапись системных файлов, ошибки файловой системы или наличие битых секторов диска – это не далеко полный список причин удаления данных.
Исправление соответствующих ошибок восстановит работоспособность устройства, но не всегда восстановит повреждённые или утерянные файлы. Не всегда имеется возможность устранить ту или иную ошибку без форматирования диска или чистой установки операционной системы, что также может повлечь за собой утерю файлов.
Загрузите бесплатно и просканируйте ваше устройство с помощью Hetman Partition Recovery. Ознакомьтесь с возможностями программы и пошаговой инструкцией.

Запустите компьютер в «безопасном режиме»
Если ошибка «REFERENCE_BY_POINTER » (0x00000018) возникает в момент загрузки Windows и блокирует любую возможность работы с системой, попробуйте включить компьютер в «безопасном режиме». Этот режим предназначен для диагностики операционной системы (далее ОС), но функционал Windows при этом сильно ограничен. «Безопасный режим» следует использовать только если работа с системой заблокирована.

Чтобы запустить безопасный режим сделайте следующее:
- Перейдите в меню Пуск и выберите Параметры.
- В открывшемся окне параметров перейдите в меню Обновление и Безопасность и выберите раздел Восстановление.
- В разделе Восстановление найдите Особые варианты загрузки и нажмите кнопку Перезагрузить сейчас.
- После этого Windows перезагрузится и предложит выбрать следующее действие. Выберите Поиск и устранение неисправностей.
- В меню Поиск и устранение неисправностей кликните на Дополнительные параметры, далее — Параметры загрузки.
- Далее Windows уведомит вас о том, что компьютер можно перезагрузить с использованием дополнительных параметров загрузки. Укажите — Включить безопасный режим. Нажмите Перезагрузить.
- После перезагрузки выберите Включить безопасный режим нажав клавишу F4.
Как загрузить Windows в безопасном режиме

Обновите драйвер через Диспетчер устройств
Вы установили новое аппаратное обеспечение на компьютере? Возможно вы начали использовать новое USB-устройство с вашим компьютером. Это могло привести к ошибке «REFERENCE_BY_POINTER ». Если вы установили драйвер устройства используя диск, который поставляется вместе с ним, или использовали драйвер не c официального сайта Microsoft, то причина в нем. Вам придется обновить драйвер устройства, чтобы устранить эту проблему.

Вы можете сделать это вручную в диспетчере устройств Windows, для того выполните следующие инструкции:
- Нажмите кнопку Windows, затем введите диспетчер устройств с клавиатуры.
- Выберите Диспетчер устройств из списка.
- Просмотрите список категорий устройств, нажмите на стрелочку рядом с категорией вашего нового устройства. Драйвер может быть отмечен желтым треугольником.
- Кликните правой кнопкой мыши на имя устройства и нажмите Обновить драйвер.
- Далее откроется окно Мастера обновления драйверов с двумя опциями:
- Автоматический поиск обновленных драйверов. Windows проверит наличие наиболее подходящего драйвера для этого устройства в автоматическом режиме.
- Выполнить поиск драйверов на этом компьютере. Используйте эту опцию, что бы самостоятельно указать ОС файлы драйвера.
Перезагрузите компьютер после установки драйвера.
Используйте sfc /scannow для проверки всех файлов системы
Повреждение или перезапись системных файлов может привести к ошибке «REFERENCE_BY_POINTER ». Команда sfc находит поврежденные системные файлы Windows и заменяет их.

- Нажмите кнопку Windows, затем введите cmd с клавиатуры.
- Правой кнопкой мышки кликните на CMD и запустите от имени администратора.
- В окне командной строки введите sfc /scannow и нажмите Enter.
Этот процесс может занять несколько минут.
Как восстановить системные файлы Windows 10

Проверьте диск с Windows на наличие ошибок командой chkdsk c: /f
Возможно к синему экрану с «REFERENCE_BY_POINTER » привела ошибка файловой системы или наличие битых секторов диска. Команда CHKDSK проверяет диск на наличие ошибок файловой системы и битых секторов. Использование параметра /f заставит программу автоматически исправлять найденные на диске ошибки, а параметр /r позволяет найти и «исправить» проблемные сектора диска. Для запуска следуйте инструкциям:

- Нажмите кнопку Windows, затем введите CMD с клавиатуры.
- Правой кнопкой мышки кликните на CMD и запустите от имени администратора.
- В окне командной строки введите chkdsk c: /f и нажмите Enter (используйте ту букву диска, на котором установлена ОС).
Дождитесь окончания процесса и перезагрузите компьютер.
Используйте режим совместимости со старой версией Windows
BSOD с кодом REFERENCE_BY_POINTER » может вызывать «устаревшее» программное обеспечение. Если ошибка появляется после запуска программы, то использование режима совместимости Windows избавит от появления ошибки. Для устранения проблемы следуйте следующим инструкциям:

- Найдите исполняемый файл программы, он имеет расширение .exe и кликните на нем правой кнопкой мышки.
- В контекстном меню укажите Исправление проблем с совместимостью.
- На следующем шаге появится окно Устранения проблем с совместимостью. Вам будет доступно два режима диагностики:
- Использовать рекомендованные параметры. Выберите этот вариант для тестового запуска программы с использованием рекомендуемых параметров совместимости.
- Диагностика программы. Выберите этот вариант для выбора параметров совместимости на основе замеченных проблем.
- После тестирования c различными версиями Windows и параметрами запуска сохраните параметры для программы.



Запуск программы в режиме совместимости Windows 10, 8, 7

Отключите лишние программы из автозагрузки Windows
Программное обеспечение, вызывающее «REFERENCE_BY_POINTER » (0x00000018), может быть прописано в автозагрузку Windows и ошибка будет появляться сразу после запуска системы без вашего участия. Удалить программы из автозагрузки можно с помощью Диспетчера задач.

- Загрузитесь в Безопасном режиме.
- Кликните правой кнопкой мышки на Панели задач, затем на пункте Диспетчер задач.
- Перейдите на вкладку Автозагрузка.
- Чтобы убрать ту или иную программу из автозагрузки выберите её из списка и отключите, нажав кнопку Отключить в правом нижнем углу окна.
Обратитесь в поддержку Microsoft
Microsoft предлагает несколько решений удаления ошибки «голубого экрана». «REFERENCE_BY_POINTER » (0x00000018) можно убрать с помощью Центра обновления или обратившись в поддержку Windows.

- Перейдите на сайт технической поддержки Microsoft.
- Введите код и сообщение об ошибке в поисковую строку и следуйте найденным рекомендациям.
- Если вы не найдете готового решения, то задайте вопрос в сообществе — возможно вам ответит сертифицированный системный администратор.
Установите последние обновления системы
С обновлениями Windows дополняет базу драйверов, исправляет ошибки и уязвимости в системе безопасности. Загрузите последние обновления, что бы избавиться от ошибки «REFERENCE_BY_POINTER » (0x00000018).

Запустить Центр обновления Windows можно следующим образом:
- Перейдите в меню Пуск и выберите Параметры.
- В окне Параметров перейдите в меню Обновление и Безопасность.
- Для установки последних обновлений Windows нажмите кнопку Проверка наличия обновлений и дождитесь окончания процесса их поиска и установки.

Рекомендуется настроить автоматическую загрузку и установку обновлений операционной системы с помощью меню Дополнительные параметры.
Чтобы включить автоматическое обновление системы необходимо запустить Центр обновления Windows:
- Перейдите в меню Пуск и выберите Параметры.
- В окне Параметров перейдите в меню Обновление и Безопасность и выберите подменю Центр обновления Windows. Для установки последних обновлений Windows нажмите кнопку Проверка наличия обновлений и дождитесь окончания процесса их поиска и установки.
- Перейдите в Дополнительные параметры и выберите, как устанавливать обновления — Автоматически.
Запустите проверку системы на вирусы
«Синий экран смерти» с ошибкой «REFERENCE_BY_POINTER » 0x00000018 может вызывать компьютерный вирус, заразивший систему Windows.
Для проверки системы на наличие вирусов запустите установленную на компьютере антивирусную программу.

Современные антивирусы позволяют проверить как жесткие диски, так и оперативную память. Выполните полную проверку системы.
Выполните проверку оперативной памяти
Неполадки с памятью могут привести к ошибкам, потере информации или прекращению работы компьютера.
Прежде чем проверять оперативную память, отключите её из разъёма на материнской плате компьютера и повторно вставьте в него. Иногда ошибка REFERENCE_BY_POINTER » вызвана неправильно или не плотно вставленной в разъём планкой оперативной памяти, или засорением контактов разъёма.
Если предложенные действия не привели к положительному результату, исправность оперативной памяти можно проверить средствами операционной системы, с помощью средства проверки памяти Windows.
Запустить средство проверки памяти Windows можно двумя способами:
-
С помощью Панели управления:


Для начала проверки выберите один из предлагаемых вариантов, проверка оперативной памяти в соответствии с которым будет запущена после перезагрузки компьютера.
Если в результате проверки будут определены ошибки, исправить которые не представляется возможным, то такую память необходимо заменить (замене подлежит модуль памяти с неполадками).
Выполните «чистую» установку Windows
Если не один из перечисленных методов не помог избавиться от REFERENCE_BY_POINTER », попробуйте переустановить Windows. Для того чтобы выполнить чистую установку Windows необходимо создать установочный диск или другой носитель с которого планируется осуществление установки операционной системы.
Загрузите компьютер из установочного диска. Для этого может понадобиться изменить устройство загрузки в BIOS или UEFI для более современных компьютеров.
Следуя пунктам меню установщика укажите диск, на который вы хотите установить Windows. Для этого понадобится отформатировать его. Если вас не устраивает количество или размер локальных дисков, их можно полностью удалить и заново перераспределить.
Помните, что форматирование, удаление или перераспределения дисков удалит все файлы с жесткого диска.
После указания диска для установки Windows запуститься процесс копирования системных файлов и установки операционной системы. Во время установки от вас не потребуется дополнительных действий. В течении установки экран компьютера будет несколько раз гаснуть на непродолжительное время, и для завершения некоторых этапов установки компьютер будет самостоятельно перезагружаться.
В зависимости от версии Windows на одном из этапов от вас может понадобиться выбрать или внести базовые параметры персонализации, режим работы компьютера в сети, а также параметры учётной записи или создать новую.
После загрузки рабочего стола чистую установку Windows можно считать законченной.
Примечание. Прежде чем приступить к выполнению чистой установки Windows заранее побеспокойтесь о наличии драйверов ко всем установленным устройствам и сохранности ваших файлов. Загрузите и сохраните драйвера на отдельный носитель информации, а для важных данных создайте резервную копию.