I am getting BAD_POOL_HEADER bugcheck when running some DTM tests on Vista64.
Firstly, the Arg1 value of 0x21 is not one that i recognize, as i understood it,
Arg1 cannot take the value 0x21.
(http://msdn.microsoft.com/en-us/library/ff557389(v=vs.85).aspx).
Secondly, when i enabled special pool with driver verifier I still get the same
BAD_POOL_HEADER bugcheck. I was hoping to see a different bugcheck (eg
SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION, DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL or
PAGE_FAULT_IN_FREED_SPECIAL_POOL etc …) which would then point me to where the
bug in my driver is.
Any thoughts/suggestions gratefully received.
thanks,
Paolo
– Output of !analyze-v included below.
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
BAD_POOL_HEADER (19)
The pool is already corrupt at the time of the current request.
This may or may not be due to the caller.
The internal pool links must be walked to figure out a possible cause of
the problem, and then special pool applied to the suspect tags or the driver
verifier to a suspect driver.
Arguments:
Arg1: 0000000000000021,
Arg2: fffff880068f4000
Arg3: 0000000000010020
Arg4: 0000000000010000
Debugging Details:
BUGCHECK_STR: 0x19_21
POOL_ADDRESS: fffff880068f4000 Paged pool
DEFAULT_BUCKET_ID: VISTA_RC
PROCESS_NAME: devpathexer.exe
CURRENT_IRQL: 0
LAST_CONTROL_TRANSFER: from fffff80001989220 to fffff800018b0450
STACK_TEXT:
fffffa6014eb34b8 fffff80001989220 : 0000000000000019 0000000000000021 fffff880068f4000 0000000000010020 : nt!KeBugCheckEx
fffffa6014eb34c0 fffffa6002bde187 : 0000000000000000 0000000000000002 0000000000000001 fffffa606d647470 : nt!ExDeferredFreePool+0x765
fffffa6014eb3570 fffff80001cbb58a : fffffa8000000008 fffff9800a18cbd0 fffffa8000010018 fffff98002000000 : POCDrv64!PocDrvDispatch+0xc17 [u:\windowspoc\code\e-poc-v6\pocdrv\pocdrv.c @ 5493]
fffffa6014eb36c0 fffff80001b1d5b9 : 0000000000000004 0000000000000040 0000000000000040 fffffa80059e0810 : nt!IovCallDriver+0x34a
fffffa6014eb3700 fffff80001b15705 : fffffa8004da0e00 0000000000000000 fffffa8005b3d660 00000c4000000001 : nt!IopParseDevice+0x5f9
fffffa6014eb38a0 fffff80001b16622 : 0000000000000a68 fffffa8005b3d748 0000000000000100 0000000000000000 : nt!ObpLookupObjectName+0x205
fffffa6014eb39b0 fffff80001b1bc27 : 0000000002000000 0000000002000000 0000000000000001 fffffa6014eb3ca0 : nt!ObOpenObjectByName+0x2f2
fffffa6014eb3a80 fffff80001b25aa8 : 000000000018e830 fffff80002000000 0000000000000000 000000000018e848 : nt!IopCreateFile+0x287
fffffa6014eb3b20 fffff800018afef3 : fffff88006973170 fffffa8002dbabb0 0000000000000a78 fffff80001b1a314 : nt!NtCreateFile+0x78
fffffa6014eb3bb0 0000000077c4726a : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : nt!KiSystemServiceCopyEnd+0x13
000000000018e7b8 0000000000000000 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : 0x77c4726a
STACK_COMMAND: kb
FOLLOWUP_IP:
POCDrv64!PocDrvDispatch+c17 [u:\windows (se)\code\e-poc-v6\pocdrv\pocdrv.c @ 5493]
fffffa6002bde187 e932030000 jmp POCDrv64!PocDrvDispatch+0xf4e (fffffa6002bde4be)
FAULTING_SOURCE_CODE:
5489: &&
5490: (pHook->pDeviceName.Buffer != NULL)
5491: &&
5492: (pHook->pDeviceName.Length > 0)
5493: &&
5494: (irpStack->Parameters.Create.SecurityContext != NULL)
5495: )
5496: {
5497: LtProbe (“xLTx-PocDrvDispatch-38”);
5498: PocTrace ((
SYMBOL_STACK_INDEX: 2
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: POCDrv64
IMAGE_NAME: POCDrv64.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4d020eb4
SYMBOL_NAME: POCDrv64!PocDrvDispatch+c17
FAILURE_BUCKET_ID: X64_0x19_21_VRF_POCDrv64!PocDrvDispatch+c17
BUCKET_ID: X64_0x19_21_VRF_POCDrv64!PocDrvDispatch+c17
Followup: MachineOwner
0: kd>