I have an sdio driver on winxp sp3 platform(when run it on server2008, never encounter the freezing ), when the driver run for a short time(sevral minute later), the system get hang. It seems that the thread of the idle process is alived and the IRQL of the processor is very high(0x1c), the scheduler of the system has no chance to runing. The thread is always lively. I got the following information:
kd> !pcr
KPCR for Processor 0 at ffdff000:
Major 1 Minor 1
NtTib.ExceptionList: 8054a324
NtTib.StackBase: 8054ad70
NtTib.StackLimit: 80547f80
NtTib.SubSystemTib: 00000000
NtTib.Version: 00000000
NtTib.UserPointer: 00000000
NtTib.SelfTib: 00000000
SelfPcr: ffdff000
Prcb: ffdff120
Irql: 0000001c
IRR: 00000004
IDR: ffff20e8
InterruptMode: 00000000
IDT: 8003f400
GDT: 8003f000
TSS: 80042000
CurrentThread: 805537c0
NextThread: fcfdcb30
IdleThread: 805537c0
DpcQueue: 0x821d8e0c 0xf77cb430 [Normal] sdbus!SdbusInterruptDpc
0x80553e20 0x80500e00 [Normal] nt!KiReadyThread
kd> !thread 805537c0
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image:
Attached Process 80553a20 Image: Idle
Wait Start TickCount 28759 Ticks: 162323 (0:00:27:05.567)
Context Switch Count 46103
UserTime 00:00:00.000
KernelTime 00:02:41.051
Stack Init 8054af80 Current 8054accc Base 8054af80 Limit 80547f80 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
8054aa34 806d77cf badb0d00 00003003 f8b201d2 nt!RtlSetBits+0x70 (FPO: [3,0,0])
8054aaa4 8054236b 01001111 0000003a 8054aab8 hal!HalBeginSystemInterrupt+0x83 (FPO: [3,0,0])
8054aae4 804f9e57 00000282 804f9ebf 820b9438 nt!RtlCopyMemoryNonTemporal+0x177
8054ab40 f80adf5a 00000000 81e00000 00000000 nt!KiGetVectorInfo+0x71 (FPO: [2,0,4])
8054ab64 80500d98 81e05030 81e05008 74dc3280 NDIS!ndisMTimerDpcX+0x7a (FPO: [4,0,4])
8054abf4 f8972a84 ffd00118 ffffffff e52cf4e0 nt!KiFindReadyThread+0x70 (FPO: [0,0,0])
8054ac80 80500eaf 80553a20 805537c0 ffdff000 kdcom!Dbg1394_EnablePhysicalAccess+0x9a (FPO: [1,0,4])
8054acac 80542b9d 80553e20 00000000 000095f9 nt!KiReadyThread+0x103 (FPO: [0,2,0])
8054acd0 80542b16 00000000 0000000e 00000000 nt!RtlpCaptureContext+0x9
00000000 00000000 00000000 00000000 00000000 nt!ExecuteHandler2+0x4a
kd> g
Break instruction exception - code 80000003 (first chance)
You are seeing this message because you pressed either
CTRL+C (if you run kd.exe) or,
CTRL+BREAK (if you run WinDBG),
on your debugger machine’s keyboard.
THIS IS NOT A BUG OR A SYSTEM CRASH
If you did not intend to break into the debugger, press the “g” key, then
press the “Enter” key now. This message might immediately reappear. If it
does, press “g” and “Enter” again.
nt!RtlSetBits+0x70:
80528bec cc int 3
kd> !thread 805537c0
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image:
Attached Process 80553a20 Image: Idle
Wait Start TickCount 28759 Ticks: 162515 (0:00:27:07.490)
Context Switch Count 46103
UserTime 00:00:00.000
KernelTime 00:02:41.051
Stack Init 8054af80 Current 8054accc Base 8054af80 Limit 80547f80 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
8054a9e8 806d7658 badb0d00 00006042 f77e7110 nt!RtlSetBits+0x70 (FPO: [3,0,0])
8054aa58 f879dffb 00006042 822020e0 8205f300 hal!READ_PORT_USHORT+0x8 (FPO: [1,0,0])
8054aa78 f7821e91 002029dc 81e73d84 8205f3b4 usbuhci!UhciInterruptService+0x2f (FPO: [1,3,0])
8054aa8c 805423c1 81e73b20 82202028 806d77cf USBPORT!USBPORT_InterruptService+0x3d (FPO: [2,0,0])
00000000 00000000 00000000 00000000 00000000 nt!RtlCopyMemoryNonTemporal+0x1cd
kd> !thread 805537c0
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image:
Attached Process 80553a20 Image: Idle
Wait Start TickCount 28759 Ticks: 162515 (0:00:27:07.490)
Context Switch Count 46103
UserTime 00:00:00.000
KernelTime 00:02:41.051
Stack Init 8054af80 Current 8054accc Base 8054af80 Limit 80547f80 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
8054a9e8 806d7658 badb0d00 00006042 f77e7110 nt!RtlSetBits+0x70 (FPO: [3,0,0])
8054aa58 f879dffb 00006042 822020e0 8205f300 hal!READ_PORT_USHORT+0x8 (FPO: [1,0,0])
8054aa78 f7821e91 002029dc 81e73d84 8205f3b4 usbuhci!UhciInterruptService+0x2f (FPO: [1,3,0])
8054aa8c 805423c1 81e73b20 82202028 806d77cf USBPORT!USBPORT_InterruptService+0x3d (FPO: [2,0,0])
00000000 00000000 00000000 00000000 00000000 nt!RtlCopyMemoryNonTemporal+0x1cd
kd> g
Break instruction exception - code 80000003 (first chance)
You are seeing this message because you pressed either
CTRL+C (if you run kd.exe) or,
CTRL+BREAK (if you run WinDBG),
on your debugger machine’s keyboard.
THIS IS NOT A BUG OR A SYSTEM CRASH
If you did not intend to break into the debugger, press the “g” key, then
press the “Enter” key now. This message might immediately reappear. If it
does, press “g” and “Enter” again.
nt!RtlSetBits+0x70:
80528bec cc int 3
kd> bl
0 e f59fbd40 0001 (0001) apwsdio!HwSdioInit
kd> !thread 805537c0
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image:
Attached Process 80553a20 Image: Idle
Wait Start TickCount 28759 Ticks: 163666 (0:00:27:19.016)
Context Switch Count 46103
UserTime 00:00:00.000
KernelTime 00:02:41.051
Stack Init 8054af80 Current 8054accc Base 8054af80 Limit 80547f80 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
8054aa34 806d77cf badb0d00 00003003 f8b201d2 nt!RtlSetBits+0x70 (FPO: [3,0,0])
8054aaa4 8054236b 01001111 0000003a 8054aab8 hal!HalBeginSystemInterrupt+0x83 (FPO: [3,0,0])
8054aae4 804f9e57 00000282 804f9ebf 820b9438 nt!RtlCopyMemoryNonTemporal+0x177
8054ab40 f80adf5a 00000000 81e00000 00000000 nt!KiGetVectorInfo+0x71 (FPO: [2,0,4])
8054ab64 80500d98 81e05030 81e05008 74dc3280 NDIS!ndisMTimerDpcX+0x7a (FPO: [4,0,4])
8054abf4 f8972a84 ffd00118 ffffffff e52cf4e0 nt!KiFindReadyThread+0x70 (FPO: [0,0,0])
8054ac80 80500eaf 80553a20 805537c0 ffdff000 kdcom!Dbg1394_EnablePhysicalAccess+0x9a (FPO: [1,0,4])
8054acac 80542b9d 80553e20 00000000 000095f9 nt!KiReadyThread+0x103 (FPO: [0,2,0])
8054acd0 80542b16 00000000 0000000e 00000000 nt!RtlpCaptureContext+0x9
00000000 00000000 00000000 00000000 00000000 nt!ExecuteHandler2+0x4a
kd> !thread 805537c0 30
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
kd> !thread 805537c0 14
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
kd> !thread 805537c0 ie
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image:
Attached Process 80553a20 Image: Idle
Wait Start TickCount 28759 Ticks: 163666 (0:00:27:19.016)
Context Switch Count 46103
UserTime 00:00:00.000
KernelTime 00:02:41.051
Stack Init 8054af80 Current 8054accc Base 8054af80 Limit 80547f80 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
8054aa34 806d77cf badb0d00 00003003 f8b201d2 nt!RtlSetBits+0x70 (FPO: [3,0,0])
8054aaa4 8054236b 01001111 0000003a 8054aab8 hal!HalBeginSystemInterrupt+0x83 (FPO: [3,0,0])
8054aae4 804f9e57 00000282 804f9ebf 820b9438 nt!RtlCopyMemoryNonTemporal+0x177
8054ab40 f80adf5a 00000000 81e00000 00000000 nt!KiGetVectorInfo+0x71 (FPO: [2,0,4])
8054ab64 80500d98 81e05030 81e05008 74dc3280 NDIS!ndisMTimerDpcX+0x7a (FPO: [4,0,4])
8054abf4 f8972a84 ffd00118 ffffffff e52cf4e0 nt!KiFindReadyThread+0x70 (FPO: [0,0,0])
8054ac80 80500eaf 80553a20 805537c0 ffdff000 kdcom!Dbg1394_EnablePhysicalAccess+0x9a (FPO: [1,0,4])
8054acac 80542b9d 80553e20 00000000 000095f9 nt!KiReadyThread+0x103 (FPO: [0,2,0])
8054acd0 80542b16 00000000 0000000e 00000000 nt!RtlpCaptureContext+0x9
00000000 00000000 00000000 00000000 00000000 nt!ExecuteHandler2+0x4a
kd> !pcr
KPCR for Processor 0 at ffdff000:
Major 1 Minor 1
NtTib.ExceptionList: 8054a324
NtTib.StackBase: 8054ad70
NtTib.StackLimit: 80547f80
NtTib.SubSystemTib: 00000000
NtTib.Version: 00000000
NtTib.UserPointer: 00000000
NtTib.SelfTib: 00000000
SelfPcr: ffdff000
Prcb: ffdff120
Irql: 0000001c
IRR: 00000004
IDR: ffff20e8
InterruptMode: 00000000
IDT: 8003f400
GDT: 8003f000
TSS: 80042000
CurrentThread: 805537c0
NextThread: fcfdcb30
IdleThread: 805537c0
DpcQueue: 0x821d8e0c 0xf77cb430 [Normal] sdbus!SdbusInterruptDpc
0x80553e20 0x80500e00 [Normal] nt!KiReadyThread
kd> g
Break instruction exception - code 80000003 (first chance)
You are seeing this message because you pressed either
CTRL+C (if you run kd.exe) or,
CTRL+BREAK (if you run WinDBG),
on your debugger machine’s keyboard.
THIS IS NOT A BUG OR A SYSTEM CRASH
If you did not intend to break into the debugger, press the “g” key, then
press the “Enter” key now. This message might immediately reappear. If it
does, press “g” and “Enter” again.
nt!RtlSetBits+0x70:
80528bec cc int 3
kd> bl
0 e f59fbd40 0001 (0001) apwsdio!HwSdioInit
kd> g
Break instruction exception - code 80000003 (first chance)
You are seeing this message because you pressed either
CTRL+C (if you run kd.exe) or,
CTRL+BREAK (if you run WinDBG),
on your debugger machine’s keyboard.
THIS IS NOT A BUG OR A SYSTEM CRASH
If you did not intend to break into the debugger, press the “g” key, then
press the “Enter” key now. This message might immediately reappear. If it
does, press “g” and “Enter” again.
nt!RtlSetBits+0x70:
80528bec cc int 3
kd> !thread 805537c0 ie
THREAD 805537c0 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image:
Attached Process 80553a20 Image: Idle
Wait Start TickCount 28759 Ticks: 745853 (0:02:04:29.270)
Context Switch Count 46103
UserTime 00:00:00.000
KernelTime 00:02:41.051
Stack Init 8054af80 Current 8054accc Base 8054af80 Limit 80547f80 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
8054a9e8 806d7658 badb0d00 00006042 00000008 nt!RtlSetBits+0x70 (FPO: [3,0,0])
8054aa58 f879dffb 00006042 822020e0 8205f300 hal!READ_PORT_USHORT+0x8 (FPO: [1,0,0])
8054aa78 f7821e91 002029dc 81e73d84 8205f3b4 usbuhci!UhciInterruptService+0x2f (FPO: [1,3,0])
8054aa8c 805423c1 81e73b20 82202028 806d77cf USBPORT!USBPORT_InterruptService+0x3d (FPO: [2,0,0])
00000000 00000000 00000000 00000000 00000000 nt!RtlCopyMemoryNonTemporal+0x1cd
Any one can give some suggestion about the hang? The thread is not waiting for some event or lock, but it always not go to wait state to let the system scheduler to run, that’s really strange.