Синий экран reference by pointer 0x00000018, решаем за минуту
Синий экран reference by pointer 0x00000018, решаем за минуту
Добрый день! Уважаемые читатели и гости одного из крупнейших 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
Как исправить ошибку 0x00000018: REFERENCE BY POINTER на компьютере с Windows 7?
Синий экран смерти 0x00000018: REFERENCE_BY_POINTER появляется на компьютере с Windows 7 и не только по различным причинам. Среди них можно выделить: повреждение драйвера устройства, его полное отсутствие или отсутствия нужного обновления; повреждение системы вирусами; ошибка в работе оперативной памяти; сбой в работе сетевой карты. Это те причины, которые вызвали BSOD на компьютерах пользователей, поделившихся своей проблемой в сети. Однако есть ряд других причин, которые могут вызвать синий экран смерти. Поэтому, если на вашем компьютере появилась ошибка 0x00000018, стоит проанализировать малый дамп памяти и провести ряд диагностических действий.
Методы решения ошибки 0x00000018: REFERENCE BY POINTER
На официальном сайте Майкрософт указано, что данная проблема может возникнуть по причине несовместимости драйвера антивируса Dr.Web с самой операционной системой. Поэтому разработчики рекомендуют удалить данный антивирус или отключить его работу на время.
После удаления защитника и проверки системы на работоспособность и определения, что BSOD все же появляется, многие юзеры, как и специалисты Майкрософт, рекомендуют проверить состояние драйверов. Для этого переходим в «Диспетчер устройств». Для этого кликаем «Пуск», нажимаем правой кнопкой мыши на значке «Мой компьютер» и выбираем «Свойства».
Откроется небольшое окно. В меню слева выбираем «Диспетчер устройств».
Разворачиваем каждую ветку древовидного меню и проверяем, чтобы не было знака восклицания возле какого-либо устройства.
Если метод ручной проверки вам не подходит, то можно запустить программу Driver Pack или любую другую для поиска и обновления устаревших драйверов.
В случае, если вы установили, что ни антивирус, ни драйвера не являются виновниками ошибки, стоит заняться тестированием модулей оперативной памяти. Выполнить нужно в такой последовательности:
- Для начала записываем на диск или флешку программу MemTest86 и запускаем её в обход Windows.
- После программной проверки нужно выключить ПК, отсоединить его от сети. Нажимаем на кнопку питания и немного держим, чтобы снять остатки заряда с материнской платы.
- Теперь извлекаем один модуль ОЗУ и запускаем систему с одной планкой. Тестируем Windows.
ВАЖНО! Для того, чтобы извлечь модули оперативной памяти, стоит нажать рядом на лапки и аккуратно вытянуть планку, держа ей за боковые ребра.
- Далее ставим ту же планку, только в другой слот. Тестируем.
- Теперь тестируем в первом слоте вторую планку. Далее тестируем её во втором слоте.
- Запускаем ПК со всеми планками. После проверки меняем их местами.
ВАЖНО! Если есть запасные планки ОЗУ, то рекомендуем протестировать Windows с другими модулями.
Если с оперативной памятью все в порядке, разработчики Майкрософт рекомендую проверить сетевую карту. Если она подключена к порту PCI, то необходимо её отключить и попробовать запустить ПК без неё, а зайти в Интернет через интегрированную карту (если она у вас рабочая и не сгорела, так как съемную сетевую карту покупают по причине неработоспособности второй).
Если с интегрированной картой система работает стабильно, нужно почистить контакты карты канцелярским ластиком и вставить в другой слот PCI. Если и после таких манипуляций система выдает BSOD, то нужно заменить сетевую карту на другую, тем более что она недорогая (от 3,5 долларов)
Если ни единый способ не помог решить проблемы, рекомендуем откатить систему до более раннего состояния или выполнить чистую установку операционной системы.
Синий экран смерти 0x00000018
0x00000018: REFERENCE_BY_POINTER
Синий экран 0x00000018 указывает, что счетчик ссылок на объект имеет недопустимое значение для текущего состояния объекта.
Параметры REFERENCE_BY_POINTER:
- Тип объекта, счетчик ссылок которого понижается;
- Объект, счетчик ссылок которого понижается;
- Зарезервированный параметр;
- Зарезервированный параметр.
Причина
Счетчик ссылок на объект имеет недопустимое значение для текущего состояния объекта. Каждый раз, когда драйвер использует указатель на объект, он вызывает подпрограмму ядра, чтобы увеличить счетчик ссылок объекта на единицу. Когда драйвер заканчивает работу с указателем, драйвер вызывает другую подпрограмму ядра, чтобы уменьшить счетчик ссылок на единицу.
Драйверы должны вызывать подпрограммы, которые увеличивают (ссылка), и уменьшают (разыменовывание) счетчик ссылок. Эта ошибка возникает при несоответствии значения счетчика ссылок объекта. Как правило, несогласованность вызвана драйвером, который уменьшает счетчик ссылок объекта слишком много раз, выполняя дополнительные вызовы, которые разыменовывают объект. Эта ошибка может произойти при нулевом значении счетчика ссылок, в то время как все еще есть открытые дескрипторы к объекту.
Решение
Удостоверьтесь, что соответствующие драйвера вызывают подпрограммы, которые увеличивают и уменьшают счетчик ссылок объекта. Удостоверьтесь, что Ваш драйвер не делает дополнительные вызовы подпрограмм, которые разыменовывают объект (см. параметр 2).
Вы можете использовать отладчик, чтобы проанализировать эту ошибку. Чтобы найти дескриптор и счетчик указателя на объект, используют нижеприведенную команду отладчика.
Где object address — адрес объекта, данного в параметре 2.
Буду признателен, если воспользуетесь кнопочками: