I wonder if anyone has any pointers to where to go from here. My 1394 device
driver is out with a beta tester and I’ve just received a memory dump with
this fault.
The windbg help sort of suggests that the computer may have a problem, but
I’m wondering if I could have caused this. It appears to have trapped in
ExAllocatePool(NonPagedPool, nMaxBytesPerFrame);
The fault seems to be an attempt to load from ds:-1 which I guess would be
pretty likely to fault - but how did I make ExAllocatePool do that?
(This is derived from the DDK 1394 example and it is actually an
ExAllocatePoolWithTag())
Many thanks - here is what windbg is telling me…
UNEXPECTED_KERNEL_MODE_TRAP (7f)
This means a trap occurred in kernel mode, and it’s a trap of a kind
that the kernel isn’t allowed to have/catch (bound trap) or that
is always instant death (double fault). The first number in the
bugcheck params is the number of the trap (8 = double fault, etc)
Consult an Intel x86 family manual to learn more about what these
traps are. Here is a *portion* of those codes:
If kv shows a taskGate
use .tss on the part before the colon, then kv.
Else if kv shows a trapframe
use .trap on that value
Else
.trap on the appropriate frame will show where the trap was taken
(on x86, this will be the ebp that goes with the procedure KiTrap)
Endif
kb will then show the corrected stack.
Arguments:
Arg1: 0000000d, EXCEPTION_GP_FAULT
Arg2: 00000000
Arg3: 00000000
Arg4: 00000000
…etc…
kd> kv
ChildEBP RetAddr Args to Child
eda0eacc 804e20e3 badb0d00 88fc0000 804f01c0 nt!KiSystemFatalException+0xf
(FPO: [0,0] TrapFrame @ eda0eacc)
eda0eb44 8054a9e1 82c7e6f8 8054a944 82c7e764
nt!ExpInterlockedPopEntrySListFault (FPO: [0,2,0])
eda0eba0 f8a993f9 00000000 ffdff120 64393331 nt!ExAllocatePoolWithTag+0x3e1
(FPO: [Non-Fpo])
eda0ebec f8a9ad82 00c7e640 82c4a0a8 00000004
lm1394!IsochAllocateResources+0x107 (FPO: [Non-Fpo]) (CONV: stdcall)
[c:\development\lm1394\driver\lm1394\isochapi.c @ 490]
eda0ec34 804e37f7 82c7e640 82c4a0a8 806ed070 lm1394!IoControl+0x282 (FPO:
[Non-Fpo]) (CONV: stdcall) [c:\development\lm1394\driver\lm1394\ioctl.c @
468]
eda0ec44 8056a101 82c4a160 82b9f3e0 82c4a0a8 nt!IopfCallDriver+0x31 (FPO:
[0,0,0])
eda0ec58 80579a8a 82c7e640 82c4a0a8 82b9f3e0
nt!IopSynchronousServiceTail+0x60 (FPO: [Non-Fpo])
eda0ed00 8057bfa5 000000ac 00000000 00000000 nt!IopXxxControlFile+0x611
(FPO: [Non-Fpo])
eda0ed34 804de7ec 000000ac 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
(FPO: [Non-Fpo])
eda0ed34 7c90eb94 000000ac 00000000 00000000 nt!KiFastCallEntry+0xf8 (FPO:
[0,0] TrapFrame @ eda0ed64)
0012f40c 7c90d8ef 7c801671 000000ac 00000000 ntdll!KiFastSystemCallRet (FPO:
[0,0,0])
0012f410 7c801671 000000ac 00000000 00000000 ntdll!ZwDeviceIoControlFile+0xc
(FPO: [10,0,0])
0012f470 00404fd7 000000ac 0022201c 0012f4b8 kernel32!DeviceIoControl+0xdd
(FPO: [Non-Fpo])
WARNING: Stack unwind information not available. Following frames may be
wrong.
00afb428 00000000 167e0081 01080146 0000001c TestFWPC+0x4fd7
kd> .trap eda0eacc
ErrCode = 00000000
eax=ffffffff ebx=80561940 ecx=88fbffff edx=88fc0000 esi=0000001e
edi=82fc3d00
eip=804e20e3 esp=eda0eb40 ebp=82fc3d00 iopl=0 nv up ei ng nz na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00010286
nt!ExpInterlockedPopEntrySListFault:
804e20e3 8b18 mov ebx,[eax]
ds:0023:ffffffff=???