SYMPTOMS
A deserialized miniport network driver interface specification (NDIS) 4.0 running on a multiprocessor
CHECKED build of Windows NT 4.0 Service Pack 3, bugchecks the system if it calls NdisMIndicateReceivePacket. This bugcheck occurs because NDIS recursively acquires an internal SpinLock in NdisMIndicateReceivePacket. The hardware abstraction layer (HAL) checks for SpinLock recursion on a
CHECKED build. The (HAL) does not test for this on a
FREE build of Windows NT, thus a deadlock can occur.
Typical output from a checked build of Windows NT 4.0 Service Pack 3 looks like the following in the debugger.
NOTE: The bugcheck code is the address of the SpinLock.
*** Fatal System Error: 0x80546B88 (0x00000000,0x00000000,0x00000000,0x00000000)
Hard coded breakpoint hit
> kb
FramePtr RetAddr Param1 Param2 Param3 Function Name
f9017c9c 801222a0 00000003 805455f4 80544000 NT!RtlpBreakWithStatusInstruction
f9017e14 80121fe9 80546b88 00000000 00000000 NT!KeBugCheckEx+0xf0
f9017e30 801781ee 80546b88 00000010 00000002 NT!KeBugCheck+0x11
f9017e40 8000527c 80546b88 00000005 fe4b5699 NT!Kii386SpinOnSpinLock@8+0x42
f9017e4c fe4b5699 f9017e74 80127321 f9017f28 HAL!@KfAcquireSpinLock@4+0x3c
f9017e60 f8ce6f4b 80546b58 f9017e80 00000010 NDIS!ethFilterIndicateReceivePacketX+0x12
f9017f88 f8ce6517 01017ec0 806ac000 f9017fe0 E100BEX!ProcessRXInterrupt+0x3b7
f9017fa8 fe48d42f 80545000 00000000 8054501c E100BEX!D100HandleInterrupt+0xdf
f9017fc8 80173738 80545030 8054501c 00000000 NDIS!ndisMDpc+0x11a
f9017ff4 8017366b 0000000e 00000000 7142dd77 NT!KiRetireDpcList+0x6b
806ac600 806ac600 00000000 f9017ff4 00000bb7 NT!KiIdleLoop+0x4b
>