BSOD 0x000000C2 — BAD_POOL_CALLER

BSOD 0x000000C2 Данный стоп код означает, что произошла ошибка при работе с пулом. Более детальная информация может быть получена на основе анализа параметров стоп кода. Особенно важен параметр 1 который определяет тип ошибки (см. ниже).

Параметры стоп кода

Параметр 1 Параметр 2 Параметр 3 Параметр 4 Причина ошибки
0x00 0 Тип пула Тег пула Текущим потоком был запрошен адрес пула по нулевому адресу
0x01,0x02,0x04 Указатель на заголовок пула Первая часть содержимого заголовка пула 0 Заголовок пула поврежден
0x06 Зарезервировано Указатель на заголовок пула Содержимое заголовка пула Текущий поток попытался освободить память пула, которая была ранее освобождена
0x07 Зарезервировано Содержимое заголовка пула Адрес блока пула, для которого была выполнена попытка освобождения памяти Текущий поток попытался освободить память пула, которая была ранее освобождена
0x08 Текущий уровень IRQL Тип пула Размер выделения в байтах Текущий поток попытался выполнить операцию выделения памяти в пуле при неправильном уровне IRQL
0x09 Текущий уровень IRQL Тип пула Адрес пула Текущий поток попытался выполнить операцию выделения памяти в пуле при неправильном уровне IRQL
0x0A Адрес пула Тег алокатора Тег используемый в попытке освобождения Текущий поток попытался выполнить освобождение памяти, используя неправильное значение тега
0x0B,0x0C,0x0D Адрес пула Тег выделения пула Указатель на неправильную квоту процессора Текущий поток попытался выполнить освобождение квоты на неправильном адресе выделенного пула
0x40 Начальный адрес Начало системного адресного пространства 0 Текущий поток выполнил попытку освободить память пула ядра по адресу из User Mode
0x41 Начальный адрес Фрейм физической страницы Наибольший адрес фрейма физической страницы Текущий поток выполнил попытку освобождения не выделенной ранее памяти в неподкачиваемом пуле
0x42,0x43 Освобождаемый адрес 0 0 Текущий поток выполнил поток освобождения виртуального адреса, который никогда не принадлежал ни одному пулу
0x44 Начальный адрес Зарезервировано 0 Текущий поток выполнил попытку освобождения памяти невыгружаемого пула ядра, которая ранее не выделялась
0x46 Начальный адрес 0 0 Текущий поток выполнил попытку освобождения памяти по неправильному адресу пула
0x47 Начальный адрес Фрейм физической страницы Наибольший адрес фрейма физической страницы Текущий поток попытался выполнить операцию освобождения памяти в неподкачиваемом пуле, которая ранее не выделялась
0x48 Начальный адрес Зарезервировано Зарезервировано Текущий поток попытался выполнить операцию освобождения памяти в подкачиваемом пуле, которая ранее не выделялась
0x50 Начальный адрес Начало смещения, в страницах, от начала выгружаемого пула Размер выгружаемого пула, в байтах Текущий поток попытался выполнить операцию освобождения памяти в подкачиваемом пуле, которая ранее не выделялась
0x60 Начальный адрес 0 0 Текущий поток попытался выполнить освобождение непрерывной памяти по неправильному адресу (был выполнен вызов MmFreeContiguousMemory с неправильным указателем)
0x99 Освобождаемый адрес 0 0 Текущий поток выполнил попытку освободить память по неправильному адресу (этот код может также обозначать повреждение заголовка пула)
0x9A Тип пула Количество запрошенных байтов Тег пула Текущий поток выполнил попытку запроса пула с флагом MUST_SUCCEED, который больше не поддерживается
0x9B Тип пула Количество запрошенных байтов Адрес вызывающего кода Текущий поток выполнил попытку запрос пула с тегом 0
0x9C Тип пула Количество запрошенных байтов Адрес вызывающего кода Текущий поток выполнил запрос пула с тегом BIG
0x9D Неправильный тег пула Тип пула Адрес вызывающего кода Текущий поток выполнил запрос пула с тегом, который не содержит цифр или букв
0x41286 Зарезервировано Зарезервировано Начало смещения от начала выгружаемого пула (в страницах) Текущий поток выполнил попытку освобождения памяти выгружаемого пула в середине выделения

Коды типов пулов _POOL_TYPE перечислены в Ntddk.h (в частности 0 – обозначает невыгружаемый пул, а 1 –  выгружаемый).

Устранение

Если вы не разработчик драйверов –  в первую очередь выполните тестирование памяти (см. Диагностика памяти с помощью Memtestx86+ и Как проверить память в Windows 7 встроенной утилитой mdsched)

Если вы разработчик –  используйте Driver Verifier (см. Использование Driver Verifier для выявления проблемного драйвера)