0x000000C2: BAD_POOL_CALLER

0x000000C2: BAD_POOL_CALLER

0x000000C2: BAD_POOL_CALLER

STOP 0x000000C5 DRIVER_CORRUPTED_EXPOOL

Процесс ядра или драйвер попытались неверно произвести операцию с
памятью. Обычно причиной являются неисправные драйвера или софт.





 

Windows 2000 XP

Применяется к следующим системам:

  1. Microsoft Windows 2000 Server
  2. Microsoft Windows 2000 Advanced Server
  3. Microsoft Windows 2000 Datacenter Server
  4. Microsoft Windows 2000 Professional
  5. Microsoft Windows XP 64-Bit Edition
  6. Microsoft Windows XP Home Edition
  7. Microsoft Windows XP Professional

Решение:

Windows 2000 содержит много различных встроенных фич, которые
усиливают процесс распределение памяти (pool allocation process). Эти
фичи могут помочь вам установить корневую причину ошибки простым дебагом
(debugging).

Следуйте следующим шагам:

BAD_POOL_CALLER (0xC2)

Текущая нить неправильно обращается к памяти. Обычно, это из-за
неверного уровня IRQL или двойного освобождения одного и того же
места памяти, и т.д.



1 - тип нарушения обращения к бассеину.

6 - адрес освобождаемого бассеина, который уже был освобождён.

7 - адрес освобождаемого бассеина, который уже был освобождён.

8 - переметр 2 - это IRQL расположения, параметр 3 - тип

9 - переметр 2 - это IRQL высвобождения, параметр 3 - тип



Parameter 1 = 0x1, 0x2, or 0x4 : заголовок басейна повреждён

Parameter 2 = указатель на заголовок

Parameter 3 = первая чать содержания заголовка

Parameter 4 = 0



Parameter 1 = 0x6 : попытка освободить пямять, которая уже свободна

Parameter 2 = резерв (__LINE__)

Parameter 3 = указатель на заголовок

Parameter 4 = содержание заголовока



Parameter 1 = 0x7 : попытка освободить пямять, которая уже свободна

Parameter 2 = резерв (__LINE__)

Parameter 3 = указатель на заголовок

Parameter 4 = 0



Parameter 1 = 0x8 : попытка освободить пямять используя неверный
IRQL

Parameter 2 = текущий IRQL

Parameter 3 = тип басейна памяти

Parameter 4 = его размер



Parameter 1 = 0x9 : попытка освободить пямять используя неверный
IRQL

Parameter 2 = текущий IRQL

Parameter 3 = тип басейна памяти

Parameter 4 = его адрес



Parameter 1 = 0x40 : попытка освободить пользовательский адрес для
ядра

Parameter 2 = адрес начала

Parameter 3 = начало системного места

Parameter 4 = 0



Parameter 1 = 0x41 : попытка освободить неиспользуемый адрес

Parameter 2 = адрес начала

Parameter 3 = рамка физической страницы

Parameter 4 = наибольшая рамка



Parameter 1 = 0x50 : попытка освободить неиспользуемый адрес

Parameter 2 = адрес начала

Parameter 3 = Start offset in pages from beginning of paged pool

Parameter 4 = размер в байтах



Parameter 1 = 0x99 : попытка освободить неверный адрес памяти (или
повреждение заголовка)

Parameter 2 = освобождаемый адрес

Parameter 3 = 0

Parameter 4 = 0

После того, как вы выяснили детальную информацию по ошибке,
воспользуйтесь дебагером.

E:bin>i386kd -z K:DOWNLOADmemory.dmp

Loading Dump File [K:DOWNLOADmemory.dmp]

Full Kernel Dump File...



0: kd> !reload GOOD HOUSEKEEPING DONE HERE

0: kd> dd kibugcheckdata l8 DUMPING THE ERROR

8047fba0 000000c2 00000007 00000b68 815bade0

8047fbb0 815bade8 e1007000 00000000 818988c0

0: kd> kv DUMPING STACK



ChildEBP RetAddr Args to Child

bdce0348 be11dc84 e1fff000 a08d0008 000007f8
banshee!vH3ImageTransferMm32

bdce037c be116f18 be85fd78 00000001 bdce03dc banshee!vMmXferNative

bdce03ac be113eec e1fff000 e25e2a38 bdce03dc banshee!vPutBits

bdce03e8 a008e47f e1ff86f8 e25e2a38 e1fef908 banshee!DrvCopyBits

bdce0430 a008e899 be113d40 bdce04d8 e1ff86f8 win32k!OffCopyBits

bdce04e4 a008e4d1 e1ff86f8 e25e2a38 00000000 win32k!SpBitBlt

Документация ошибки указывает, что память была освобождена. Это явно из
линии:

Parameter 1 = 0x7: Attempt to free pool which was already freed.

Так же видно, что видео карта в процессе записи, поэтому мы должны
продолжать работу над ошибкой. Во-первых, мы должны выявить, если этот
компьютер мультипроцессорный:

0: kd> ~1 SWITCH PROC

1: kd> kv DUMPING STACK

ChildEBP RetAddr Args to Child

bde81b7c 8046894d 815bade8 00000000 be03bb2b
ntkrnlmp!ExFreePoolWithTag

bde81b88 be03bb2b 815bade8 be03ca94 815bade8 ntkrnlmp!ExFreePool

00000128 00000000 00000000 00000000 00000000 BADDRIVER

Предыдущий текст указывает, что память была освобождена драйвером
имя_драйвера
. Это может быть корневой причиной.

Теперь выявим драйвер.

1: kd> !drivers

Loaded System Driver Summary



Base Code Size Data Size Driver Name Creation Time

80400000 139f40 (1255 kb) 4f3c0 (316 kb) ntoskrnl.exe Tue Dec 07
14:05:26 1999

80062000 ffe0 ( 63 kb) 3d60 ( 15 kb) hal.dll Tue Nov 02 20:14:22
1999

ed410000 1760 ( 5 kb) 1000 ( 4 kb) BOOTVID.dll Wed Nov 03 20:24:33
1999

ed49c000 1b00 ( 6 kb) 680 ( 1 kb) gameenum.sys Sat Sep 25 14:35:57
1999

ed080000 a000 ( 40 kb) 20c0 ( 8 kb) VIDEOPRT.SYS Sat Nov 06 16:55:20
1999

bfdcf000 1d480 ( 117 kb) 7520 ( 29 kb) mga64m.sys Mon Nov 29
20:47:46 1999

bfdbc000 11600 ( 69 kb) 1600 ( 5 kb) el90xnd5.sys Fri Oct 29
17:54:34 1999

ed090000 3a60 ( 14 kb) 5980 ( 22 kb) banshee.sys Fri Oct 29 19:00:56
1999

ed5df000 2e0 ( 0 kb) 4a0 ( 1 kb) audstub.sys Sat Sep 25 14:35:33
1999

ed370000 33e0 ( 12 kb) a40 ( 2 kb) raspti.sys Fri Oct 08 16:45:10
1999

ed0c0000 c5e0 ( 49 kb) 20e0 ( 8 kb) parallel.sys Fri Oct 22 18:00:54
1999

ed5e0000 580 ( 1 kb) 540 ( 1 kb) swenum.sys Sat Sep 25 14:36:31 1999

be552000 72a60 ( 458 kb) 13c40 ( 79 kb) mga64d.dll Tue Nov 30
04:33:19 1999

be113000 36f00 ( 219 kb) 7a20 ( 30 kb) banshee.dll Tue Nov 30
04:31:18 1999

be031000 FFFF ( FF kb) FFFF ( F kb) BADDRIVER.sys Mon Feb 30
23:22:43 2000



TOTAL: 7f8dc0 (8163 kb) 172140 (1480 kb) ( 0 kb 0 kb)

Предыдущий текст показывает, что драйвер используется ПО третьей
стороны. Этот драйвер, скорей всего, и есть главная причина ошибки.



Microsoft Debugging Tools


http://www.microsoft.com/ddk/debugging/default.asp