| Предыдущий | Следующий |
| SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION | SYSTEM_IMAGE_BAD_SIGNATURE |
BAD_POOL_CALLER
Bug check BAD_POOL_CALLER имеет значение 0x000000C2. Текущий поток выполняет недопустимый запрос к pool.
Важно
Параметры BAD_POOL_CALLER
Параметр 1 задаёт тип нарушения.
| Параметр 1 | Параметр 2 | Параметр 3 | Параметр 4 | Причина ошибки |
|---|---|---|---|---|
0x00 |
0 |
Тип pool |
Тег pool |
Текущий поток запросил выделение pool нулевого размера. |
0x01, 0x02, 0x04 |
Указатель на заголовок pool |
Первая часть содержимого заголовка pool |
0 |
Заголовок pool повреждён. |
0x06 |
Зарезервировано |
Указатель на заголовок pool |
Содержимое заголовка pool |
Текущий поток попытался освободить уже освобождённый pool. |
0x07 |
Зарезервировано |
Содержимое заголовка pool |
Адрес освобождаемого блока pool |
Текущий поток попытался освободить уже освобождённый pool. |
0x08 |
Текущий IRQL |
Тип pool |
Размер выделения в байтах |
Текущий поток попытался выделить pool при недопустимом IRQL. |
0x09 |
Текущий IRQL |
Тип pool |
Адрес pool |
Текущий поток попытался освободить pool при недопустимом IRQL. |
0x0A |
Адрес pool |
Тег выделившего компонента |
Тег, использованный при попытке освобождения |
Текущий поток попытался освободить pool memory с неправильным тегом. Память может принадлежать другому компоненту. |
0x0B, 0x0C, or 0x0D |
Адрес pool |
Тег выделения pool |
Недопустимый указатель quota process |
Текущий поток попытался освободить quota повреждённого выделения pool. |
0x40 |
Начальный адрес |
Начало системного адресного пространства |
0 |
Текущий поток попытался освободить kernel pool по адресу user mode. |
0x41 |
Начальный адрес |
Номер физической страницы |
Наибольший номер физической страницы |
Текущий поток попытался освободить невыделенный адрес nonpaged pool. |
0x42 или 0x43 |
Освобождаемый адрес |
0 |
0 |
Текущий поток попытался освободить виртуальный адрес, никогда не принадлежавший pool. |
0x44 |
Начальный адрес |
Зарезервировано |
0 |
Текущий поток попытался освободить невыделенный адрес nonpaged pool. |
0x46 |
Начальный адрес |
0 |
0 |
Текущий поток попытался освободить недопустимый адрес pool. |
0x47 |
Начальный адрес |
Номер физической страницы |
Наибольший номер физической страницы |
Текущий поток попытался освободить невыделенный адрес nonpaged pool. |
0x48 |
Начальный адрес |
Зарезервировано |
Зарезервировано |
Текущий поток попытался освободить невыделенный адрес paged pool. |
0x50 |
Начальный адрес |
Начальное смещение в страницах от начала paged pool |
Размер paged pool в байтах |
Текущий поток попытался освободить невыделенный адрес paged pool. |
0x60 |
Начальный адрес |
0 |
0 |
Текущий поток попытался освободить недопустимый адрес contiguous memory. Вызывающая сторона функции MmFreeContiguousMemory передала недопустимый указатель. |
0x99 |
Освобождаемый адрес |
0 |
0 |
Текущий поток попытался освободить pool по недопустимому адресу. Код также может означать повреждение заголовка pool. |
0x9A |
Тип pool |
Запрошенное число байтов |
Тег pool |
Текущий поток пометил запрос выделения как MUST_SUCCEED. Этот тип pool больше не поддерживается. |
0x9B |
Тип pool |
Запрошенное число байтов |
Адрес вызывающей стороны |
Текущий поток попытался выделить pool с тегом 0 Такое выделение нельзя отслеживать, и оно может повредить существующие таблицы тегов. |
0x9C |
Тип pool |
Запрошенное число байтов |
Адрес вызывающей стороны |
Текущий поток попытался выделить pool с тегом "BIG". Такое выделение нельзя отслеживать, и оно способно повредить таблицы тегов. |
0x9D |
Использован неправильный тег pool |
Тип pool |
Адрес вызывающей стороны |
Текущий поток попытался выделить pool с тегом без букв и цифр. Такие теги затрудняют отслеживание проблем pool. |
0x41286 |
Зарезервировано |
Зарезервировано |
Смещение от начала paged pool в страницах |
Текущий поток попытался освободить адрес paged pool в середине выделенного блока. |
Коды _POOL_TYPE перечислены в Ntddk.h: 0 означает nonpaged pool, а 1 — paged pool.
Причина BAD_POOL_CALLER
Текущий поток выполнил недопустимый запрос pool, обычно при неправильном IRQL или повторном освобождении одного выделения.
Устранение BAD_POOL_CALLER
Включите Driver Verifier с опциями memory pool, чтобы получить дополнительные данные и найти отказавший driver.
Driver Verifier
Driver Verifier проверяет поведение drivers в реальном времени и создаёт исключение при обнаружении ошибки выполнения. Менеджер встроен в Windows и запускается командой Verifier. Выберите минимально необходимый набор подозреваемых drivers, поскольку проверка создаёт дополнительную нагрузку.
Диагностика памяти Windows
При повреждении memory pool запустите Windows Memory Diagnostics, чтобы исключить физическую память. После теста проверьте в Event Viewer журнал System и запись MemoryDiagnostics-Results.
Официальные ссылки для BAD_POOL_CALLER
- Microsoft: справочник кодов bug check
- Microsoft: анализ kernel-mode dump с WinDbg
- Microsoft: команда WinDbg !analyze
Нужно найти другой код? Найти другой код состояния или ошибки.
