BSOD 0x00000076 — PROCESS_HAS_LOCKED_PAGES

BSOD 0x00000076 Данный стоп код означает, что драйвер не освободил заблокированную страницу после операции ввода/вывода или он попытался разблокировать страницу, которая уже был разблокирована. Стоп код имеет следующие параметры (таблица ниже).

Параметр 1 Параметр 2 Параметр 3 Параметр 4 Причина ошибки
0x00 Указатель на объект процесса Количество заблокированных страниц Указатель на стеки драйвера (если они включены), иначе данный параметр равен 0 Процесс, который был завершен, имел заблокированные страницы. Драйвер должен разблокировать любую память, которая может быть заблокирована в процессе перед его завершением
0x01 MDL, указанный в драйвере Текущее количество заблокированный страниц в процессе Указатель на стеки драйвера (если они включены), иначе данный параметр равен 0 Драйвер попытался разблокировать страницы памяти процесса, которые не были заблокированы

Устранение

Если параметр 1 равен 0x0. Сначала воспользуйтесь расширением !search с указателем на процесс (параметр 2) для просмотра всей физической памяти. Это расширение может найти по крайней мере один MDL, который указывает на текущий процесс. Далее используйте !search на каждом найденном MDL для получения IRP пакета, который указывает на текущий процесс. С этого IRP вы сможете определить, какой из драйверов не разблокировал страницы.

Также можно изменить реестр — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management. Установите значение для TrackLockedPages равное 1. Перегрузите компьютер. Система сохранит стеки вызовов, таким образом вы сможете легко идентифицировать драйвер, который привел к краху. Если драйвер вновь вызовет крах, будет сгенерирован стоп код 0xCB — DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS при этом на экране будет отображено имя драйвера, который привел к краху.

Если параметр 1 равен 0x1. Разработчикам необходимо проанализировать исходный код драйвера.