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 fffff800
01989220 : 0000000000000019 00000000
00000021 fffff880068f4000 00000000
00010020 : nt!KeBugCheckEx
fffffa6014eb34c0 fffffa60
02bde187 : 0000000000000000 00000000
00000002 0000000000000001 fffffa60
6d647470 : nt!ExDeferredFreePool+0x765
fffffa6014eb3570 fffff800
01cbb58a : fffffa8000000008 fffff980
0a18cbd0 fffffa8000010018 fffff980
02000000 : POCDrv64!PocDrvDispatch+0xc17 [u:\windowspoc\code\e-poc-v6\pocdrv\pocdrv.c @ 5493]
fffffa6014eb36c0 fffff800
01b1d5b9 : 0000000000000004 00000000
00000040 0000000000000040 fffffa80
059e0810 : nt!IovCallDriver+0x34a
fffffa6014eb3700 fffff800
01b15705 : fffffa8004da0e00 00000000
00000000 fffffa8005b3d660 00000c40
00000001 : nt!IopParseDevice+0x5f9
fffffa6014eb38a0 fffff800
01b16622 : 0000000000000a68 fffffa80
05b3d748 0000000000000100 00000000
00000000 : nt!ObpLookupObjectName+0x205
fffffa6014eb39b0 fffff800
01b1bc27 : 0000000002000000 00000000
02000000 0000000000000001 fffffa60
14eb3ca0 : nt!ObOpenObjectByName+0x2f2
fffffa6014eb3a80 fffff800
01b25aa8 : 000000000018e830 fffff800
02000000 0000000000000000 00000000
0018e848 : nt!IopCreateFile+0x287
fffffa6014eb3b20 fffff800
018afef3 : fffff88006973170 fffffa80
02dbabb0 0000000000000a78 fffff800
01b1a314 : nt!NtCreateFile+0x78
fffffa6014eb3bb0 00000000
77c4726a : 0000000000000000 00000000
00000000 0000000000000000 00000000
00000000 : nt!KiSystemServiceCopyEnd+0x13
000000000018e7b8 00000000
00000000 : 0000000000000000 00000000
00000000 0000000000000000 00000000
00000000 : 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 (fffffa60
02bde4be)
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>