Синий экран 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 и скармливаем по очереди ваши файлы дампов, для начала я посмотрю мини дамп.
Arguments:
Arg1: 0000000000000000, Object type of the object whose reference count is being lowered
Arg2: ffffe80208a4e700, Object whose reference count is being lowered
Arg3: 0000000000000010, Reserved
Arg4: ffffc0024a26e1f1, Reserved
The reference count of an object is illegal for the current state of the object.
Each time a driver uses a pointer to an object the driver calls a kernel routine
to increment the reference count of the object. When the driver is done with the
pointer the driver calls another kernel routine to decrement the reference count.
Drivers must match calls to the increment and decrement routines. This bugcheck
can occur because an object's reference count goes to zero while there are still
open handles to the object, in which case the fourth parameter indicates the number
of opened handles. It may also occur when the object's reference count drops below zero
whether or not there are open handles to the object, and in that case the fourth parameter
contains the actual value of the pointer references count.
Debugging Details:
------------------
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)
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: WIN8_DRIVER_FAULT_SERVER
BUGCHECK_STR: 0x18
PROCESS_NAME: rdpclip.exe
CURRENT_IRQL: 0
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
THREAD_SHA1_HASH_MOD_FUNC_OFFSET: 1efd5a3d77a03ac828224e1fb8e3d35afa86dad0
THREAD_SHA1_HASH_MOD: 97b52b1597adef9978611e2aa3ee60bbb160a7b2
FOLLOWUP_IP:
rdbss!__RxAcquireFcb+e7
fffff800`55732a67 440fb6f0 movzx r14d,al
FAULT_INSTR_CODE: f0b60f44
SYMBOL_STACK_INDEX: 5
SYMBOL_NAME: rdbss!__RxAcquireFcb+e7
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: rdbss
IMAGE_NAME: rdbss.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 5a4b1af3
IMAGE_VERSION: 6.3.9600.18895
STACK_COMMAND: .thread ; .cxr ; kb
BUCKET_ID_FUNC_OFFSET: e7
FAILURE_BUCKET_ID: 0x18_rdbss!__RxAcquireFcb
BUCKET_ID: 0x18_rdbss!__RxAcquireFcb
PRIMARY_PROBLEM_CLASS: 0x18_rdbss!__RxAcquireFcb
TARGET_TIME: 2019-11-05T10:44:34.000Z
OSBUILD: 9600
OSSERVICEPACK: 19377
SERVICEPACK_NUMBER: 0
OS_REVISION: 0
SUITE_MASK: 16
PRODUCT_TYPE: 3
OSPLATFORM_TYPE: x64
OSNAME: Windows 8.1
OSEDITION: Windows 8.1 Server TerminalServer
USER_LCID: 0
OSBUILD_TIMESTAMP: 2019-05-25 03:00:40
BUILDDATESTAMP_STR: 190524-1500
BUILDLAB_STR: winblue_ltsb_escrow
BUILDOSVER_STR: 6.3.9600.19377.amd64fre.winblue_ltsb_escrow.190524-1500
ANALYSIS_SESSION_ELAPSED_TIME: 5b34
ANALYSIS_SOURCE: KM
FAILURE_ID_HASH_STRING: km:0x18_rdbss!__rxacquirefcb
FAILURE_ID_HASH: {e2688e42-1abf-a0e7-2a21-11e57f3c2a16}
так же можно более детально увидеть имя сбойного драйвера и его версию.
Browse full module list
start end module name
fffff800`556ff000 fffff800`5576d000 rdbss (pdb symbols) c:\symcache\rdbss.pdb\B2DD7E21017744368743EEA8B3A12C872\rdbss.pdb
Loaded symbol image file: rdbss.sys
Mapped memory image file: c:\symcache\rdbss.sys\5A4B1AF36e000\rdbss.sys
Image path: \SystemRoot\system32\DRIVERS\rdbss.sys
Image name: rdbss.sys
Browse all global symbols functions data
Timestamp: Mon Jan 1 22:38:59 2018 (5A4B1AF3)
CheckSum: 00065E62
ImageSize: 0006E000
File version: 6.3.9600.18895
Product version: 6.3.9600.18895
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 3.7 Driver
File date: 00000000.00000000
Translations: 0409.04b0
Information from resource tables:
CompanyName: Microsoft Corporation
ProductName: Microsoft® Windows® Operating System
InternalName: rdbss.sys
OriginalFilename: RDBSS.Sys
ProductVersion: 6.3.9600.18895
FileVersion: 6.3.9600.18895 (winblue_ltsb.180101-1800)
FileDescription: Redirected Drive Buffering SubSystem Driver
Browse full module list
start end module name
fffff800`556ff000 fffff800`5576d000 rdbss (pdb symbols) c:\symcache\rdbss.pdb\B2DD7E21017744368743EEA8B3A12C872\rdbss.pdb
Loaded symbol image file: rdbss.sys
Mapped memory image file: c:\symcache\rdbss.sys\5A4B1AF36e000\rdbss.sys
Image path: \SystemRoot\system32\DRIVERS\rdbss.sys
Image name: rdbss.sys
Browse all global symbols functions data
Timestamp: Mon Jan 1 22:38:59 2018 (5A4B1AF3)
CheckSum: 00065E62
ImageSize: 0006E000
File version: 6.3.9600.18895
Product version: 6.3.9600.18895
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 3.7 Driver
File date: 00000000.00000000
Translations: 0409.04b0
Information from resource tables:
CompanyName: Microsoft Corporation
ProductName: Microsoft® Windows® Operating System
InternalName: rdbss.sys
OriginalFilename: RDBSS.Sys
ProductVersion: 6.3.9600.18895
FileVersion: 6.3.9600.18895 (winblue_ltsb.180101-1800)
FileDescription: Redirected Drive Buffering SubSystem Driver
LegalCopyright: © Microsoft Corporation. All rights reserved.
11: kd> x /D rdbss!a*
Из приведенного вывода дампа следует, что синий экран reference_by_pointer 0x00000018 произошел из-за файла rdbss.sys, версии 6.3.9600.18895, а так же процесса rdpclip.exe, отвечающего за буфер на удаленном рабочем столе. Если вы постоянный мой читатель, то помните, что из-за файла rdbss.sys мы уже ловили синий экран 0x00000027 так же на одном из хостов RDS фермы.
Код 18 0x00000018 - может появляться по причине, Счетчик ссылок на объект недопустим для текущего состояния объекта. Каждый раз, когда драйвер использует указатель на объект, драйвер вызывает процедуру ядра, чтобы увеличить число ссылок объекта на единицу. Когда драйвер завершает работу с указателем, драйвер вызывает другую процедуру ядра, чтобы уменьшить количество ссылок на единицу.
Драйверы должны сопоставлять вызовы подпрограмм, которые увеличивают и уменьшают счетчик ссылок. Эта проверка ошибок вызвана несогласованностью в подсчете ссылок объекта. Как правило, несогласованность вызвана драйвером, который уменьшает количество ссылок объекта слишком много раз, делая дополнительные вызовы, которые разыменовывают объект. Эта проверка на наличие ошибок может произойти, потому что счетчик ссылок объекта обнуляется, в то время как все еще есть открытые дескрипторы объекта. Это также может произойти, когда счетчик ссылок объекта упадет ниже нуля, независимо от того, есть ли открытые маркеры объекта.
Методы устранения синего экрана reference_by_pointer 0x00000018
Первое, что вы должны сделать, это произвести установку всех обновлений на вашу систему. Перед обновлением я удостоверюсь, что версия файла rdbss.sys у меня 6.3.9600.18895. Файл располагается по пути C:\Windows\System32\drivers.
Далее открываем "Панель управления", если же вы поймали ошибку reference_by_pointer в Windows 10, то нужно зайти в параметры Windows - Центр обновления.
В моем случае у меня Windows Server 2012 R2, и я как и писал выше иду в панель управления - Центр обновления Windows.
Производим поиск обновлений, как видим в моем случае нашлось 48 штук, устанавливаем.После перезагрузки еще раз проверьте наличие обновлений, у Microsoft они могут устанавливаться в два этапа. После перезагрузки я вижу, что у меня версия файла rdbss.sys стала 6.3.9600.19481, а была напоминаю 6.3.9600.18895. Проверяем работу вашего сервера Windows Server 2012 R2.
Если синий экран reference_by_pointer с кодом 0x00000018 повторился, то снова проверьте причину, если она другая и из-за другого драйвера, то делаем следующее. Откройте командную строку обязательно от имени администратора и произведите поиск и устранение ошибок в целостности системных файлов и хранилища компонентов. Для этого у меня есть волшебный код:
Дожидаемся окончание операции, в идеале если будут повреждения, утилиты должны их исправить, но могут быть и ситуации, когда вы получите ошибку, которую вам придется поискать в интернете, их может быть около десятка вариаций. Обязательно перезагружаем ваш компьютер.
Обновление и переустановка драйверов
Очень часто ошибку x00000018 на клиентских операционных системах по типу Windows 7 или Windows 10, вызывает сбойный драйвер, в случае с драйверами Microsoft, они обновляются через центр обновления, если же мы говорим, о других драйверах, например на материнскую плату, жесткий диск, процессор или то же принтер, то вам придется их скачать на официальном сайте производителя и произвести обновление. Обязательно старайтесь держать их в актуальном состоянии. Чтобы посмотреть текущие версии драйверов, вы можете открыть диспетчер устройств.
Если у вас, как и у меня виртуальная машина, то в таком случае необходимо произвести установку свежих версий драйверов интеграции, у меня, это VMware Tools.
Дополнительные причины возникновения ошибки 0x00000018
- Если у вас в компьютере несколько планок оперативной памяти, то попробуйте их проверить на наличие ошибок, чтобы найти сбойную, можно попробовать включить компьютер и запускать его с разными планками, чтобы найти сбойную.
- Видел случаи, что BSOD reference_by_pointer вызывал драйвер антивирусного решения Dr.Web dwprot.sys или Kaspersk Kl.sys. Попробуйте его обновить. Если не поможет обратитесь к разработчику за исправлением или удалите его на время.
- Если у вас BSOD появился после установки новой программы, то удалите ее. Если система не загружается, то сделайте, это через безопасный режим Windows. Удаление производится через окно "Панель управления\Все элементы панели управления\Программы и компоненты"
или "Параметры Windows - Приложения и возможности"
На этом у меня все. Надеюсь, что мой скромный опыт траблшутинга оказался вам полезным и вы устранили причины синего экрана reference_by_pointer 0x00000018. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Видно, что автор очень глубоко понимает суть работы виндовс, и ищет причину ошибки целенаправленно, а не просто одно решение на все случаи жизни переустановка винды))) Обязательно занесу этот сайт в закладки.