| Предыдущий | Следующий |
| REFERENCE_BY_POINTER | MEMORY_MANAGEMENT |
BAD_POOL_HEADER
Bug check BAD_POOL_HEADER имеет значение 0x00000019 и означает повреждение заголовка pool.
Важно
Параметры BAD_POOL_HEADER
Parameter 1 задаёт тип нарушения; смысл остальных параметров зависит от его значения.
| Параметр 1 | Параметр 2 | Параметр 3 | Параметр 4 | Причина ошибки |
|---|---|---|---|---|
0x2 |
Проверяемая запись pool |
Размер блока pool |
0 |
Проверка шаблона Special Pool завершилась ошибкой. Вероятно, владелец повредил блок pool. |
0x3 |
Проверяемая запись pool |
Считанное значение flink значение freelist |
Считанное значение blink значение freelist |
Freelist pool повреждён. В исправном списке значения Parameters 2, 3 и 4 должны совпадать. |
0x5 |
Одна из записей pool |
Зарезервировано |
Другая запись pool |
Заголовки двух соседних записей pool противоречат друг другу; как минимум один повреждён. |
0x6 |
Одна неправильно вычисленная запись |
Зарезервировано |
Повреждённая запись, вызвавшая ошибку вычисления |
Поле previous size заголовка блока pool слишком велико. |
0x7 |
0 |
Зарезервировано |
Повреждённая запись pool |
Размер в заголовке блока pool повреждён. |
0x8 |
0 |
Зарезервировано |
Повреждённая запись pool |
Размер в заголовке блока pool равен нулю. |
0x9 |
Одна неправильно вычисленная запись |
Зарезервировано |
Повреждённая запись, вызвавшая ошибку вычисления |
Размер в заголовке блока pool повреждён и слишком велик. |
0xA |
Запись pool, которую следовало найти |
Зарезервировано |
Виртуальный адрес страницы, где должна была находиться запись pool |
Размер в заголовке блока pool повреждён. |
0xD, 0xE, 0xF, 0x23, 0x24, 0x25 |
Зарезервировано |
Зарезервировано |
Зарезервировано |
Заголовок освобождённого блока был изменён после освобождения. Обычно виноват не прежний владелец, а переполнение предшествующего блока. |
0x20 |
Запись pool, которую следовало найти |
Следующая запись pool |
Зарезервировано |
Размер в заголовке блока pool повреждён. |
0X21 |
Освобождаемый указатель pool |
Число байтов, выделенных блоку pool |
Повреждённое значение после блока pool |
Данные после освобождаемого блока pool повреждены; обычно consumer из call stack вышел за границу блока. |
0X22 |
Освобождаемый адрес |
Зарезервировано |
Зарезервировано |
Для освобождаемого адреса нет tracking entry. Обычно stack пытается освободить уже освобождённый или никогда не выделявшийся pointer. |
Причина BAD_POOL_HEADER
К моменту текущего запроса pool уже повреждён.
Причиной не обязательно является текущая вызывающая сторона.
Устранение BAD_POOL_HEADER
Для поиска причины пройдите внутренние links pool с помощью kernel debugger.
Затем включите Special Pool для подозреваемых pool tags или опцию Driver Verifier Special Pool для подозреваемого driver. Расширение !analyze может помочь определить driver, но при повреждении pool это удаётся не всегда.
Выполните действия из раздела Blue Screen Data для сбора Stop Code Parameters и определения конкретного поведения кода, которое нужно найти.
Driver Verifier
Driver Verifier проверяет drivers в реальном времени и создаёт исключение при ошибке выполнения. Запустите менеджер командой Verifier и проверяйте минимально необходимый набор drivers из-за дополнительной нагрузки.
Диагностика памяти Windows
Если bug check появляется непоследовательно, возможна неисправность физической памяти.
Запустите Windows Memory Diagnostics. После теста проверьте Event Viewer, журнал System и запись MemoryDiagnostics-Results.
Нужно найти другой код? Найти другой код состояния или ошибки.