Hi all,
I'm developping a encrypted virtual disk driver which simulate a hard disk partition using a data file. The virtual disk is formatted in NTFS using the system format function. It seems work well in Windows 2000, but it cause BugCheck frequently in XP. Obviously the crash is caused by my driver but it don't happen within my code. I've been engaged in this problem for weeks, I'll appreciate any advise or suggestion.
The following is the dump diagnosis I've got the last time. How can I derive the code that cause this crash?
kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_CORRUPTED_EXPOOL (c5)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high. This is
caused by drivers that have corrupted the system pool. Run the driver
verifier against any new (or suspect) drivers, and if that doesn't turn up
the culprit, then use gflags to enable special pool.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000001, value 0 = read operation, 1 = write operation
Arg4: 80535600, address which referenced memory
Debugging Details:
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0xC5
LAST_CONTROL_TRANSFER: from 8058fc06 to 80535600
STACK_TEXT:
f6f98b2c 8058fc06 00000001 00000000 f6f98bf0 nt!ExFreePoolWithTag+0x4a8
f6f98bd8 8052e571 ffffffff f6f98c88 f6f98c8c nt!NtFreeVirtualMemory+0x49e
f6f98bd8 804f9a9d ffffffff f6f98c88 f6f98c8c nt!KiSystemService+0xc4
f6f98c60 805ad658 ffffffff f6f98c88 f6f98c8c nt!ZwFreeVirtualMemory+0x11
f6f98d14 805ada20 00000000 00000000 84332c10 nt!PspExitThread+0x531
f6f98d34 805add46 84332c10 00000000 f6f98d64 nt!PspTerminateThreadByPointer+0x50
f6f98d54 8052e571 00000000 00000000 805466e0 nt!NtTerminateThread+0x6e
f6f98d54 7ffe0304 00000000 00000000 805466e0 nt!KiSystemService+0xc4
00aaff64 00000000 00000000 00000000 00000000 SharedUserData!SystemCallStub+0x4
FOLLOWUP_IP:
nt!KiTrap0E+2ad
80531335 f7457000000200 test dword ptr [ebp+0x70],0x20000
SYMBOL_STACK_INDEX: 1
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: nt!KiTrap0E+2ad
MODULE_NAME: nt
IMAGE_NAME: ntoskrnl.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 3ea80977
STACK_COMMAND: .trap fffffffff6f98a8c ; kb
BUCKET_ID: 0xC5_nt!KiTrap0E+2ad
Followup: MachineOwner
kd> .trap fffffffff6f98a8c ; kb
ErrCode = 00000002
eax=00000000 ebx=8429b6d8 ecx=000001ff edx=00000000 esi=8429ae28 edi=805479a0
eip=80535600 esp=f6f98b00 ebp=f6f98b2c iopl=0 nv up ei ng nz ac po cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000297
nt!ExFreePoolWithTag+0x4a8:
80535600 8902 mov [edx],eax ds:0023:00000000=????????
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr Args to Child
f6f98b2c 8058fc06 00000001 00000000 f6f98bf0 nt!ExFreePoolWithTag+0x4a8
f6f98bd8 8052e571 ffffffff f6f98c88 f6f98c8c nt!NtFreeVirtualMemory+0x49e
f6f98bd8 804f9a9d ffffffff f6f98c88 f6f98c8c nt!KiSystemService+0xc4
f6f98c60 805ad658 ffffffff f6f98c88 f6f98c8c nt!ZwFreeVirtualMemory+0x11
f6f98d14 805ada20 00000000 00000000 84332c10 nt!PspExitThread+0x531
f6f98d34 805add46 84332c10 00000000 f6f98d64 nt!PspTerminateThreadByPointer+0x50
f6f98d54 8052e571 00000000 00000000 805466e0 nt!NtTerminateThread+0x6e
f6f98d54 7ffe0304 00000000 00000000 805466e0 nt!KiSystemService+0xc4
00aaff64 00000000 00000000 00000000 00000000 SharedUserData!SystemCallStub+0x4