system hang caused by "DPC execution time exceeds system limit "

Hello all,

I got a system hang as “DPC execution time exceeds system limit”.

Connected to Windows 7 7600 x86 compatible target at (Mon May 9
10:25:00.126 2011 (UTC + 8:00)), ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: SRV*E:\symbols*
http://msdl.microsoft.com/download/symbols;E:\WorkSpace\Pdb
Executable search path is: E:\WorkSpace\exe
Windows 7 Kernel Version 7600 MP (2 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 7600.16695.x86fre.win7_gdr.101026-1503
Machine Name:
Kernel base = 0x8420b000 PsLoadedModuleList = 0x84353810
Debug session time: Mon May 9 10:25:38.605 2011 (UTC + 8:00)
System Uptime: 0 days 0:10:21.509
Assertion: *** DPC execution time exceeds system limit
This is NOT a break in update time
This is a BUG in a DPC routine
Perform a stack trace to find the culprit
The time out limit will be doubled on continuation
Use gh to continue!!

nt!KeAccumulateTicks+0x316:
84276ee8 cd2c int 2Ch

I know that “The maximum and minimum DPC timeout limit is 10 seconds and 20
ms respectively.”, so I’m wondering which dpc cause this problem. so I use
!dpcs

0: kd> !dpcs
CPU Type KDPC Function
0: Normal : 0x86c0dc74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
0: Normal : 0x86c28c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
0: Normal : 0x86be4c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc

Which one exceeds system limit?
But i didn’t use USBPORT directly. so I’m not sure how can i fix this. the
output of analyze is as follow:

0: kd> !analyze -v
Connected to Windows 7 7600 x86 compatible target at (Mon May 9
10:25:47.473 2011 (UTC + 8:00)), ptr64 FALSE
Loading Kernel Symbols



Loading User Symbols

Loading unloaded module list

*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************

Unknown bugcheck code (0)
Unknown bugcheck description
Arguments:
Arg1: 00000000
Arg2: 00000000
Arg3: 00000000
Arg4: 00000000

Debugging Details:

PROCESS_NAME: System

DPC_TIMEOUT_TYPE: SINGLE_DPC_TIMEOUT_EXCEEDED

DPC_RUNTIME: 283

DPC_TIME_LIMIT: 282

FAULTING_IP:
nt!KeAccumulateTicks+316
84276ee8 cd2c int 2Ch

EXCEPTION_RECORD: ffffffff – (.exr 0xffffffffffffffff)
ExceptionAddress: 84276ee8 (nt!KeAccumulateTicks+0x00000316)
ExceptionCode: c0000420 (Assertion failure)
ExceptionFlags: 00000000
NumberParameters: 0
Assertion: *** DPC execution time exceeds system limit
This is NOT a break in update time
This is a BUG in a DPC routine
Perform a stack trace to find the culprit
The time out limit will be doubled on continuation
Use gh to continue!!

ERROR_CODE: (NTSTATUS) 0xc0000420 -

EXCEPTION_CODE: (NTSTATUS) 0xc0000420 -

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

BUGCHECK_STR: 0x0

CURRENT_IRQL: 1c

TRAP_FRAME: 8078ad84 – (.trap 0xffffffff8078ad84)
ErrCode = 00000000
eax=0000ca38 ebx=843408c0 ecx=0000007f edx=00000080 esi=00000004
edi=84335418
eip=8425206d esp=8078adf8 ebp=84335418 iopl=0 nv up ei pl nz ac po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00010212
nt!ExpInterlockedPopEntrySListFault:
8425206d 8b18 mov ebx,dword ptr [eax]
ds:0023:0000ca38=???
Resetting default scope

LAST_CONTROL_TRANSFER: from 84276462 to 84276ee8

STACK_TEXT:
8078ac60 84276462 00026160 00000000 00009b00 nt!KeAccumulateTicks+0x316
8078aca0 8427630f 84251608 00000004 00000000 nt!KeUpdateRunTime+0x145
8078acfc 8427b67f 84335402 84335402 000000d1 nt!KeUpdateSystemTime+0x613
8078acfc 84251608 84335402 84335402 000000d1
nt!KeUpdateSystemTimeAssist+0x13
8078ad84 8425206d badb0d00 00000080 8078adac nt!KiTrap0E+0xbc
8078ae00 8432ad4a 85fade78 00000000 85d33a85
nt!ExpInterlockedPopEntrySListFault
8078ae50 8461f8e1 00000000 00000018 206c6148 nt!ExAllocatePoolWithTag+0x19a
8078ae78 8461fc16 86cd1c20 86c0d028 00000018
hal!HalBuildScatterGatherList+0x6d
8078aea8 8eafce70 86cd1c20 86c0d028 85fade78
hal!HalGetScatterGatherList+0x26
8078aef4 8eafc807 86c0d028 86c0d970 00000003
USBPORT!USBPORT_Core_iMapTransfer+0x21e
8078af24 8eaf6d18 86c0d028 86c0d970 86c0d002
USBPORT!USBPORT_Core_UsbMapDpc_Worker+0x1e3
8078af48 842734f5 86c0d97c 86c0d002 00000000
USBPORT!USBPORT_Xdpc_Worker+0x173
8078afa4 84273358 84334d20 85b91a70 00000000 nt!KiExecuteAllDpcs+0xf9
8078aff4 84272b1c 8c117700 00000000 00000000 nt!KiRetireDpcList+0xd5
8078aff8 8c117700 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2c
WARNING: Frame IP not in any known module. Following frames may be wrong.
84272b1c 00000000 0000001a 00d6850f bb830000 0x8c117700

STACK_COMMAND: kb

FOLLOWUP_IP:
USBPORT!USBPORT_Core_iMapTransfer+21e
8eafce70 8945f4 mov dword ptr [ebp-0Ch],eax

SYMBOL_STACK_INDEX: 9

SYMBOL_NAME: USBPORT!USBPORT_Core_iMapTransfer+21e

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: USBPORT

IMAGE_NAME: USBPORT.SYS

DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc871

FAILURE_BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e

BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e

Followup: MachineOwner
---------

I can’t find something useful in the call stack to help me get around this.
What else should I do to fix this problem? Any help would be appreciated.
Thank in advance.


Danny

The checking is usually done on another CPU which is still alive and not on
the CPU which is stuck. So get a stack trace of all CPUs in the system (0kp,
1kp, 2kp, etc) or use the command “!running -it” and see which one has your
driver routines on the stack.

//Daniel

“Danny” wrote in message news:xxxxx@ntdev…
> Hello all,
>
> I got a system hang as “DPC execution time exceeds system limit”.
>
> Connected to Windows 7 7600 x86 compatible target at (Mon May 9
> 10:25:00.126 2011 (UTC + 8:00)), ptr64 FALSE
> Kernel Debugger connection established.
> Symbol search path is: SRVE:\symbols
> http://msdl.microsoft.com/download/symbols;E:\WorkSpace\Pdb
> Executable search path is: E:\WorkSpace\exe
> Windows 7 Kernel Version 7600 MP (2 procs) Free x86 compatible
> Product: WinNt, suite: TerminalServer SingleUserTS
> Built by: 7600.16695.x86fre.win7_gdr.101026-1503
> Machine Name:
> Kernel base = 0x8420b000 PsLoadedModuleList = 0x84353810
> Debug session time: Mon May 9 10:25:38.605 2011 (UTC + 8:00)
> System Uptime: 0 days 0:10:21.509
> Assertion: DPC execution time exceeds system limit
> This is NOT a break in update time
> This is a BUG in a DPC routine
> Perform a stack trace to find the culprit
> The time out limit will be doubled on continuation
> Use gh to continue!!
>
> nt!KeAccumulateTicks+0x316:
> 84276ee8 cd2c int 2Ch
>
>
> I know that “The maximum and minimum DPC timeout limit is 10 seconds and
> 20
> ms respectively.”, so I’m wondering which dpc cause this problem. so I use
> !dpcs
>
> 0: kd> !dpcs
> CPU Type KDPC Function
> 0: Normal : 0x86c0dc74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> 0: Normal : 0x86c28c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> 0: Normal : 0x86be4c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
>
> Which one exceeds system limit?
> But i didn’t use USBPORT directly. so I’m not sure how can i fix this. the
> output of analyze is as follow:
>
>
>
> 0: kd> !analyze -v
> Connected to Windows 7 7600 x86 compatible target at (Mon May 9
> 10:25:47.473 2011 (UTC + 8:00)), ptr64 FALSE
> Loading Kernel Symbols
> …
> …
> …
> Loading User Symbols
>
> Loading unloaded module list
> …
>
****************************************************************************
> *
> *
> * Bugcheck Analysis
> *
> *
> *
> ****************************************************************************
>
> Unknown bugcheck code (0)
> Unknown bugcheck description
> Arguments:
> Arg1: 00000000
> Arg2: 00000000
> Arg3: 00000000
> Arg4: 00000000
>
> Debugging Details:
> ------------------
>
>
> PROCESS_NAME: System
>
> DPC_TIMEOUT_TYPE: SINGLE_DPC_TIMEOUT_EXCEEDED
>
> DPC_RUNTIME: 283
>
> DPC_TIME_LIMIT: 282
>
> FAULTING_IP:
> nt!KeAccumulateTicks+316
> 84276ee8 cd2c int 2Ch
>
> EXCEPTION_RECORD: ffffffff – (.exr 0xffffffffffffffff)
> ExceptionAddress: 84276ee8 (nt!KeAccumulateTicks+0x00000316)
> ExceptionCode: c0000420 (Assertion failure)
> ExceptionFlags: 00000000
> NumberParameters: 0
> Assertion:
DPC execution time exceeds system limit
> This is NOT a break in update time
> This is a BUG in a DPC routine
> Perform a stack trace to find the culprit
> The time out limit will be doubled on continuation
> Use gh to continue!!
>
>
> ERROR_CODE: (NTSTATUS) 0xc0000420 -
>
> EXCEPTION_CODE: (NTSTATUS) 0xc0000420 -
>
> DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
>
> BUGCHECK_STR: 0x0
>
> CURRENT_IRQL: 1c
>
> TRAP_FRAME: 8078ad84 – (.trap 0xffffffff8078ad84)
> ErrCode = 00000000
> eax=0000ca38 ebx=843408c0 ecx=0000007f edx=00000080 esi=00000004
> edi=84335418
> eip=8425206d esp=8078adf8 ebp=84335418 iopl=0 nv up ei pl nz ac po
> nc
> cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
> efl=00010212
> nt!ExpInterlockedPopEntrySListFault:
> 8425206d 8b18 mov ebx,dword ptr [eax]
> ds:0023:0000ca38=???
> Resetting default scope
>
> LAST_CONTROL_TRANSFER: from 84276462 to 84276ee8
>
> STACK_TEXT:
> 8078ac60 84276462 00026160 00000000 00009b00 nt!KeAccumulateTicks+0x316
> 8078aca0 8427630f 84251608 00000004 00000000 nt!KeUpdateRunTime+0x145
> 8078acfc 8427b67f 84335402 84335402 000000d1 nt!KeUpdateSystemTime+0x613
> 8078acfc 84251608 84335402 84335402 000000d1
> nt!KeUpdateSystemTimeAssist+0x13
> 8078ad84 8425206d badb0d00 00000080 8078adac nt!KiTrap0E+0xbc
> 8078ae00 8432ad4a 85fade78 00000000 85d33a85
> nt!ExpInterlockedPopEntrySListFault
> 8078ae50 8461f8e1 00000000 00000018 206c6148
> nt!ExAllocatePoolWithTag+0x19a
> 8078ae78 8461fc16 86cd1c20 86c0d028 00000018
> hal!HalBuildScatterGatherList+0x6d
> 8078aea8 8eafce70 86cd1c20 86c0d028 85fade78
> hal!HalGetScatterGatherList+0x26
> 8078aef4 8eafc807 86c0d028 86c0d970 00000003
> USBPORT!USBPORT_Core_iMapTransfer+0x21e
> 8078af24 8eaf6d18 86c0d028 86c0d970 86c0d002
> USBPORT!USBPORT_Core_UsbMapDpc_Worker+0x1e3
> 8078af48 842734f5 86c0d97c 86c0d002 00000000
> USBPORT!USBPORT_Xdpc_Worker+0x173
> 8078afa4 84273358 84334d20 85b91a70 00000000 nt!KiExecuteAllDpcs+0xf9
> 8078aff4 84272b1c 8c117700 00000000 00000000 nt!KiRetireDpcList+0xd5
> 8078aff8 8c117700 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2c
> WARNING: Frame IP not in any known module. Following frames may be wrong.
> 84272b1c 00000000 0000001a 00d6850f bb830000 0x8c117700
>
>
> STACK_COMMAND: kb
>
> FOLLOWUP_IP:
> USBPORT!USBPORT_Core_iMapTransfer+21e
> 8eafce70 8945f4 mov dword ptr [ebp-0Ch],eax
>
> SYMBOL_STACK_INDEX: 9
>
> SYMBOL_NAME: USBPORT!USBPORT_Core_iMapTransfer+21e
>
> FOLLOWUP_NAME: MachineOwner
>
> MODULE_NAME: USBPORT
>
> IMAGE_NAME: USBPORT.SYS
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc871
>
> FAILURE_BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e
>
> BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e
>
> Followup: MachineOwner
> ---------
>
> I can’t find something useful in the call stack to help me get around
> this.
> What else should I do to fix this problem? Any help would be appreciated.
> Thank in advance.
>
> –
> Danny
>

Thanks for reply, Daniel.

After checking other CPU, my driver routines still cannot be found.- -??

1: kd> !dpcs
CPU Type KDPC Function
1: Normal : 0x86bcf97c 0x8f711ba5 USBPORT!USBPORT_Xdpc_Worker
1: Normal : 0x85b8809c 0x888b25c0 ataport!IdePortCompletionDpc
1: Normal : 0x807cc520 0x8430935d nt!PpmPerfAction
1: Normal : 0x86bcfc74 0x8f7115bf USBPORT!USBPORT_IsrDpc
1: Normal : 0x86c5ec74 0x8f7115bf USBPORT!USBPORT_IsrDpc
1: Normal : 0x86c40c74 0x8f7115bf USBPORT!USBPORT_IsrDpc

1: kd> !running -it

System Processors: (00000003)
Idle Processors: (00000001)

Prcbs Current Next
0 8433fd20 84349280 …

ChildEBP RetAddr
8433cb84 842814a4 nt!KdPollBreakIn+0xea
8433cb88 84281481 nt!KdCheckForDebugBreak+0x17
8433cbb8 8428130f nt!KeUpdateRunTime+0x164
8433cc14 8428667f nt!KeUpdateSystemTime+0x613
8433cc14 8f6bc5d6 nt!KeUpdateSystemTimeAssist+0x13
8433cc98 8429b79d intelppm!C1Halt+0x4
8433cd20 8427e14d nt!PoIdle+0x538
8433cd24 00000000 nt!KiIdleLoop+0xd

1 807c9120 85b90798 869f3030 …

ChildEBP RetAddr
807e9ba8 84281462 nt!KeAccumulateTicks+0x316
807e9be8 84629430 nt!KeUpdateRunTime+0x145
807e9be8 8425c608 hal!HalpClockInterruptPn+0x158
807e9c6c 8425d06d nt!KiTrap0E+0xbc
807e9ce8 84335d4a nt!ExpInterlockedPopEntrySListFault
807e9d3c 96061afc nt!ExAllocatePoolWithTag+0x19a
807e9d5c 96061d98 usbhub!UsbhIncPdoIoCount+0x54
807e9d84 96061b92 usbhub!UsbhPdoInternalDeviceControl+0x34
807e9d98 842524ac usbhub!UsbhGenDispatch+0x4a
807e9db0 96181397 nt!IofCallDriver+0x63
807e9dd0 961807d8 hidusb!HumReadReport+0xef
807e9df4 9618c377 hidusb!HumInternalIoctl+0xd6
807e9e08 9618d7b0 HIDCLASS!HidpCallDriver+0x3f
807e9e24 9618d6be HIDCLASS!HidpSubmitInterruptRead+0xa0
807e9e5c 8427ec53 HIDCLASS!HidpInterruptReadComplete+0x286
807e9ea0 8f713868 nt!IopfCompleteRequest+0x128
807e9ed0 8f714178 USBPORT!USBPORT_Core_iCompleteDoneTransfer+0x6e0
807e9efc 8f7179af USBPORT!USBPORT_Core_iIrpCsqCompleteDoneTransfer+0x33b
807e9f24 8f711d18 USBPORT!USBPORT_Core_UsbIocDpc_Worker+0xbc
807e9f48 8427e4f5 USBPORT!USBPORT_Xdpc_Worker+0x173
807e9fa4 8427e358 nt!KiExecuteAllDpcs+0xf9
807e9ff4 8427db1c nt!KiRetireDpcList+0xd5
807e9ff8 8c12f958 nt!KiDispatchInterrupt+0x2c
WARNING: Frame IP not in any known module. Following frames may be wrong.
8427db1c 00000000 0x8c12f958

1: kd> !analyze -v
Connected to Windows 7 7600 x86 compatible target at (Mon May 9
16:39:41.044 2011 (UTC + 8:00)), ptr64 FALSE
Loading Kernel Symbols



Loading User Symbols

Loading unloaded module list

*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************

Unknown bugcheck code (0)
Unknown bugcheck description
Arguments:
Arg1: 00000000
Arg2: 00000000
Arg3: 00000000
Arg4: 00000000

Debugging Details:

PROCESS_NAME: System

DPC_TIMEOUT_TYPE: SINGLE_DPC_TIMEOUT_EXCEEDED

DPC_RUNTIME: 283

DPC_TIME_LIMIT: 282

FAULTING_IP:
nt!KeAccumulateTicks+316
84281ee8 cd2c int 2Ch

EXCEPTION_RECORD: ffffffff – (.exr 0xffffffffffffffff)
ExceptionAddress: 84281ee8 (nt!KeAccumulateTicks+0x00000316)
ExceptionCode: c0000420 (Assertion failure)
ExceptionFlags: 00000000
NumberParameters: 0
Assertion: *** DPC execution time exceeds system limit
This is NOT a break in update time
This is a BUG in a DPC routine
Perform a stack trace to find the culprit
The time out limit will be doubled on continuation
Use gh to continue!!

ERROR_CODE: (NTSTATUS) 0xc0000420 -

EXCEPTION_CODE: (NTSTATUS) 0xc0000420 -

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

BUGCHECK_STR: 0x0

CURRENT_IRQL: 1c

TRAP_FRAME: 807e9c6c – (.trap 0xffffffff807e9c6c)
ErrCode = 00000000
eax=000078e0 ebx=8434b8c0 ecx=0001000b edx=0001000c esi=00000004
edi=807c9818
eip=8425d06d esp=807e9ce0 ebp=807c9818 iopl=0 nv up ei pl nz na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00010202
nt!ExpInterlockedPopEntrySListFault:
8425d06d 8b18 mov ebx,dword ptr [eax]
ds:0023:000078e0=???
Resetting default scope

LAST_CONTROL_TRANSFER: from 84281462 to 84281ee8

STACK_TEXT:
807e9ba8 84281462 00026160 00000000 00142f00 nt!KeAccumulateTicks+0x316
807e9be8 84629430 807c9802 000000d1 807e9c6c nt!KeUpdateRunTime+0x145
807e9be8 8425c608 807c9802 000000d1 807e9c6c hal!HalpClockInterruptPn+0x158
807e9c6c 8425d06d badb0d00 0001000c 807e9ccc nt!KiTrap0E+0xbc
807e9ce8 84335d4a 86eaa0e8 86eaa0e8 86eaa544
nt!ExpInterlockedPopEntrySListFault
807e9d3c 96061afc 00000000 00000014 42554855 nt!ExAllocatePoolWithTag+0x19a
807e9d5c 96061d98 02eaa030 86be6908 4944494f usbhub!UsbhIncPdoIoCount+0x54
807e9d84 96061b92 86eaa030 86be69e4 86eaa030
usbhub!UsbhPdoInternalDeviceControl+0x34
807e9d98 842524ac 86eaa030 86be6908 85d0ae00 usbhub!UsbhGenDispatch+0x4a
807e9db0 96181397 86be6908 00000000 86ec2030 nt!IofCallDriver+0x63
807e9dd0 961807d8 86ec2030 86ebb368 807e9df3 hidusb!HumReadReport+0xef
807e9df4 9618c377 86ec2030 86ec22bc 86ec8090 hidusb!HumInternalIoctl+0xd6
807e9e08 9618d7b0 86ec2030 86be6908 9619323c HIDCLASS!HidpCallDriver+0x3f
807e9e24 9618d6be 86ec20fc 86ec8090 807e9e6b
HIDCLASS!HidpSubmitInterruptRead+0xa0
807e9e5c 8427ec53 00000000 00be6908 86ec20fc
HIDCLASS!HidpInterruptReadComplete+0x286
807e9ea0 8f713868 84256334 85ff89a8 00000000 nt!IopfCompleteRequest+0x128
807e9ed0 8f714178 85d27df8 86be6908 85d0ae00
USBPORT!USBPORT_Core_iCompleteDoneTransfer+0x6e0
807e9efc 8f7179af 86bcf028 86bcf0f0 86bcfa98
USBPORT!USBPORT_Core_iIrpCsqCompleteDoneTransfer+0x33b
807e9f24 8f711d18 86bcf028 86bcfa98 86bcf002
USBPORT!USBPORT_Core_UsbIocDpc_Worker+0xbc
807e9f48 8427e4f5 86bcfaa4 86bcf002 00000000
USBPORT!USBPORT_Xdpc_Worker+0x173
807e9fa4 8427e358 807c9120 85b90798 00000000 nt!KiExecuteAllDpcs+0xf9
807e9ff4 8427db1c 8c12f958 00000000 00000000 nt!KiRetireDpcList+0xd5
807e9ff8 8c12f958 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2c
WARNING: Frame IP not in any known module. Following frames may be wrong.
8427db1c 00000000 0000001a 00d6850f bb830000 0x8c12f958

STACK_COMMAND: kb

FOLLOWUP_IP:
hidusb!HumReadReport+ef
96181397 8b4d10 mov ecx,dword ptr [ebp+10h]

SYMBOL_STACK_INDEX: a

SYMBOL_NAME: hidusb!HumReadReport+ef

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: hidusb

IMAGE_NAME: hidusb.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc868

FAILURE_BUCKET_ID: 0x0_hidusb!HumReadReport+ef

BUCKET_ID: 0x0_hidusb!HumReadReport+ef

Followup: MachineOwner
---------

2011/5/9

> The checking is usually done on another CPU which is still alive and not on
> the CPU which is stuck. So get a stack trace of all CPUs in the system
> (0kp,
> 1kp, 2kp, etc) or use the command “!running -it” and see which one has your
> driver routines on the stack.
>
> //Daniel
>
>
>
> “Danny” wrote in message news:xxxxx@ntdev…
> > Hello all,
> >
> > I got a system hang as “DPC execution time exceeds system limit”.
> >
> > Connected to Windows 7 7600 x86 compatible target at (Mon May 9
> > 10:25:00.126 2011 (UTC + 8:00)), ptr64 FALSE
> > Kernel Debugger connection established.
> > Symbol search path is: SRVE:\symbols
> > http://msdl.microsoft.com/download/symbols;E:\WorkSpace\Pdb
> > Executable search path is: E:\WorkSpace\exe
> > Windows 7 Kernel Version 7600 MP (2 procs) Free x86 compatible
> > Product: WinNt, suite: TerminalServer SingleUserTS
> > Built by: 7600.16695.x86fre.win7_gdr.101026-1503
> > Machine Name:
> > Kernel base = 0x8420b000 PsLoadedModuleList = 0x84353810
> > Debug session time: Mon May 9 10:25:38.605 2011 (UTC + 8:00)
> > System Uptime: 0 days 0:10:21.509
> > Assertion: DPC execution time exceeds system limit
> > This is NOT a break in update time
> > This is a BUG in a DPC routine
> > Perform a stack trace to find the culprit
> > The time out limit will be doubled on continuation
> > Use gh to continue!!
> >
> > nt!KeAccumulateTicks+0x316:
> > 84276ee8 cd2c int 2Ch
> >
> >
> > I know that “The maximum and minimum DPC timeout limit is 10 seconds and
> > 20
> > ms respectively.”, so I’m wondering which dpc cause this problem. so I
> use
> > !dpcs
> >
> > 0: kd> !dpcs
> > CPU Type KDPC Function
> > 0: Normal : 0x86c0dc74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> > 0: Normal : 0x86c28c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> > 0: Normal : 0x86be4c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> >
> > Which one exceeds system limit?
> > But i didn’t use USBPORT directly. so I’m not sure how can i fix this.
> the
> > output of analyze is as follow:
> >
> >
> >
> > 0: kd> !analyze -v
> > Connected to Windows 7 7600 x86 compatible target at (Mon May 9
> > 10:25:47.473 2011 (UTC + 8:00)), ptr64 FALSE
> > Loading Kernel Symbols
> > …
> > …
> > …
> > Loading User Symbols
> >
> > Loading unloaded module list
> > …
> >
>
****************************************************************************
> > *
> > *
> > * Bugcheck Analysis
> > *
> > *
> > *
> >
> ****************************************************************************
> >
> > Unknown bugcheck code (0)
> > Unknown bugcheck description
> > Arguments:
> > Arg1: 00000000
> > Arg2: 00000000
> > Arg3: 00000000
> > Arg4: 00000000
> >
> > Debugging Details:
> > ------------------
> >
> >
> > PROCESS_NAME: System
> >
> > DPC_TIMEOUT_TYPE: SINGLE_DPC_TIMEOUT_EXCEEDED
> >
> > DPC_RUNTIME: 283
> >
> > DPC_TIME_LIMIT: 282
> >
> > FAULTING_IP:
> > nt!KeAccumulateTicks+316
> > 84276ee8 cd2c int 2Ch
> >
> > EXCEPTION_RECORD: ffffffff – (.exr 0xffffffffffffffff)
> > ExceptionAddress: 84276ee8 (nt!KeAccumulateTicks+0x00000316)
> > ExceptionCode: c0000420 (Assertion failure)
> > ExceptionFlags: 00000000
> > NumberParameters: 0
> > Assertion:
DPC execution time exceeds system limit
> > This is NOT a break in update time
> > This is a BUG in a DPC routine
> > Perform a stack trace to find the culprit
> > The time out limit will be doubled on continuation
> > Use gh to continue!!
> >
> >
> > ERROR_CODE: (NTSTATUS) 0xc0000420 -
> >
> > EXCEPTION_CODE: (NTSTATUS) 0xc0000420 -
> >
> > DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
> >
> > BUGCHECK_STR: 0x0
> >
> > CURRENT_IRQL: 1c
> >
> > TRAP_FRAME: 8078ad84 – (.trap 0xffffffff8078ad84)
> > ErrCode = 00000000
> > eax=0000ca38 ebx=843408c0 ecx=0000007f edx=00000080 esi=00000004
> > edi=84335418
> > eip=8425206d esp=8078adf8 ebp=84335418 iopl=0 nv up ei pl nz ac
> po
> > nc
> > cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
> > efl=00010212
> > nt!ExpInterlockedPopEntrySListFault:
> > 8425206d 8b18 mov ebx,dword ptr [eax]
> > ds:0023:0000ca38=???
> > Resetting default scope
> >
> > LAST_CONTROL_TRANSFER: from 84276462 to 84276ee8
> >
> > STACK_TEXT:
> > 8078ac60 84276462 00026160 00000000 00009b00 nt!KeAccumulateTicks+0x316
> > 8078aca0 8427630f 84251608 00000004 00000000 nt!KeUpdateRunTime+0x145
> > 8078acfc 8427b67f 84335402 84335402 000000d1 nt!KeUpdateSystemTime+0x613
> > 8078acfc 84251608 84335402 84335402 000000d1
> > nt!KeUpdateSystemTimeAssist+0x13
> > 8078ad84 8425206d badb0d00 00000080 8078adac nt!KiTrap0E+0xbc
> > 8078ae00 8432ad4a 85fade78 00000000 85d33a85
> > nt!ExpInterlockedPopEntrySListFault
> > 8078ae50 8461f8e1 00000000 00000018 206c6148
> > nt!ExAllocatePoolWithTag+0x19a
> > 8078ae78 8461fc16 86cd1c20 86c0d028 00000018
> > hal!HalBuildScatterGatherList+0x6d
> > 8078aea8 8eafce70 86cd1c20 86c0d028 85fade78
> > hal!HalGetScatterGatherList+0x26
> > 8078aef4 8eafc807 86c0d028 86c0d970 00000003
> > USBPORT!USBPORT_Core_iMapTransfer+0x21e
> > 8078af24 8eaf6d18 86c0d028 86c0d970 86c0d002
> > USBPORT!USBPORT_Core_UsbMapDpc_Worker+0x1e3
> > 8078af48 842734f5 86c0d97c 86c0d002 00000000
> > USBPORT!USBPORT_Xdpc_Worker+0x173
> > 8078afa4 84273358 84334d20 85b91a70 00000000 nt!KiExecuteAllDpcs+0xf9
> > 8078aff4 84272b1c 8c117700 00000000 00000000 nt!KiRetireDpcList+0xd5
> > 8078aff8 8c117700 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2c
> > WARNING: Frame IP not in any known module. Following frames may be wrong.
> > 84272b1c 00000000 0000001a 00d6850f bb830000 0x8c117700
> >
> >
> > STACK_COMMAND: kb
> >
> > FOLLOWUP_IP:
> > USBPORT!USBPORT_Core_iMapTransfer+21e
> > 8eafce70 8945f4 mov dword ptr [ebp-0Ch],eax
> >
> > SYMBOL_STACK_INDEX: 9
> >
> > SYMBOL_NAME: USBPORT!USBPORT_Core_iMapTransfer+21e
> >
> > FOLLOWUP_NAME: MachineOwner
> >
> > MODULE_NAME: USBPORT
> >
> > IMAGE_NAME: USBPORT.SYS
> >
> > DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc871
> >
> > FAILURE_BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e
> >
> > BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e
> >
> > Followup: MachineOwner
> > ---------
> >
> > I can’t find something useful in the call stack to help me get around
> > this.
> > What else should I do to fix this problem? Any help would be appreciated.
> > Thank in advance.
> >
> > –
> > Danny
> >
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>


Danny

Have you tried reproducing the problem without your driver loaded and the
debugger attached ? This might be a problem only for the debugger, it looks
as if the debugger does not recognize the sleep state of the intel processor
driver and makes a problem that some clock interrupt was missing. Possibly
you can fix this by updating the processor driver or windows update but
maybe I might be wrong.

//Daniel

“Danny” wrote in message news:xxxxx@ntdev…
> Hello all,
>
> I got a system hang as “DPC execution time exceeds system limit”.
>
> Connected to Windows 7 7600 x86 compatible target at (Mon May 9
> 10:25:00.126 2011 (UTC + 8:00)), ptr64 FALSE
> Kernel Debugger connection established.
> Symbol search path is: SRVE:\symbols
> http://msdl.microsoft.com/download/symbols;E:\WorkSpace\Pdb
> Executable search path is: E:\WorkSpace\exe
> Windows 7 Kernel Version 7600 MP (2 procs) Free x86 compatible
> Product: WinNt, suite: TerminalServer SingleUserTS
> Built by: 7600.16695.x86fre.win7_gdr.101026-1503
> Machine Name:
> Kernel base = 0x8420b000 PsLoadedModuleList = 0x84353810
> Debug session time: Mon May 9 10:25:38.605 2011 (UTC + 8:00)
> System Uptime: 0 days 0:10:21.509
> Assertion: DPC execution time exceeds system limit
> This is NOT a break in update time
> This is a BUG in a DPC routine
> Perform a stack trace to find the culprit
> The time out limit will be doubled on continuation
> Use gh to continue!!
>
> nt!KeAccumulateTicks+0x316:
> 84276ee8 cd2c int 2Ch
>
>
> I know that “The maximum and minimum DPC timeout limit is 10 seconds and
> 20
> ms respectively.”, so I’m wondering which dpc cause this problem. so I use
> !dpcs
>
> 0: kd> !dpcs
> CPU Type KDPC Function
> 0: Normal : 0x86c0dc74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> 0: Normal : 0x86c28c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
> 0: Normal : 0x86be4c74 0x8eaf65bf USBPORT!USBPORT_IsrDpc
>
> Which one exceeds system limit?
> But i didn’t use USBPORT directly. so I’m not sure how can i fix this. the
> output of analyze is as follow:
>
>
>
> 0: kd> !analyze -v
> Connected to Windows 7 7600 x86 compatible target at (Mon May 9
> 10:25:47.473 2011 (UTC + 8:00)), ptr64 FALSE
> Loading Kernel Symbols
> …
> …
> …
> Loading User Symbols
>
> Loading unloaded module list
> …
>
****************************************************************************
> *
> *
> * Bugcheck Analysis
> *
> *
> *
> ****************************************************************************
>
> Unknown bugcheck code (0)
> Unknown bugcheck description
> Arguments:
> Arg1: 00000000
> Arg2: 00000000
> Arg3: 00000000
> Arg4: 00000000
>
> Debugging Details:
> ------------------
>
>
> PROCESS_NAME: System
>
> DPC_TIMEOUT_TYPE: SINGLE_DPC_TIMEOUT_EXCEEDED
>
> DPC_RUNTIME: 283
>
> DPC_TIME_LIMIT: 282
>
> FAULTING_IP:
> nt!KeAccumulateTicks+316
> 84276ee8 cd2c int 2Ch
>
> EXCEPTION_RECORD: ffffffff – (.exr 0xffffffffffffffff)
> ExceptionAddress: 84276ee8 (nt!KeAccumulateTicks+0x00000316)
> ExceptionCode: c0000420 (Assertion failure)
> ExceptionFlags: 00000000
> NumberParameters: 0
> Assertion:
DPC execution time exceeds system limit
> This is NOT a break in update time
> This is a BUG in a DPC routine
> Perform a stack trace to find the culprit
> The time out limit will be doubled on continuation
> Use gh to continue!!
>
>
> ERROR_CODE: (NTSTATUS) 0xc0000420 -
>
> EXCEPTION_CODE: (NTSTATUS) 0xc0000420 -
>
> DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
>
> BUGCHECK_STR: 0x0
>
> CURRENT_IRQL: 1c
>
> TRAP_FRAME: 8078ad84 – (.trap 0xffffffff8078ad84)
> ErrCode = 00000000
> eax=0000ca38 ebx=843408c0 ecx=0000007f edx=00000080 esi=00000004
> edi=84335418
> eip=8425206d esp=8078adf8 ebp=84335418 iopl=0 nv up ei pl nz ac po
> nc
> cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
> efl=00010212
> nt!ExpInterlockedPopEntrySListFault:
> 8425206d 8b18 mov ebx,dword ptr [eax]
> ds:0023:0000ca38=???
> Resetting default scope
>
> LAST_CONTROL_TRANSFER: from 84276462 to 84276ee8
>
> STACK_TEXT:
> 8078ac60 84276462 00026160 00000000 00009b00 nt!KeAccumulateTicks+0x316
> 8078aca0 8427630f 84251608 00000004 00000000 nt!KeUpdateRunTime+0x145
> 8078acfc 8427b67f 84335402 84335402 000000d1 nt!KeUpdateSystemTime+0x613
> 8078acfc 84251608 84335402 84335402 000000d1
> nt!KeUpdateSystemTimeAssist+0x13
> 8078ad84 8425206d badb0d00 00000080 8078adac nt!KiTrap0E+0xbc
> 8078ae00 8432ad4a 85fade78 00000000 85d33a85
> nt!ExpInterlockedPopEntrySListFault
> 8078ae50 8461f8e1 00000000 00000018 206c6148
> nt!ExAllocatePoolWithTag+0x19a
> 8078ae78 8461fc16 86cd1c20 86c0d028 00000018
> hal!HalBuildScatterGatherList+0x6d
> 8078aea8 8eafce70 86cd1c20 86c0d028 85fade78
> hal!HalGetScatterGatherList+0x26
> 8078aef4 8eafc807 86c0d028 86c0d970 00000003
> USBPORT!USBPORT_Core_iMapTransfer+0x21e
> 8078af24 8eaf6d18 86c0d028 86c0d970 86c0d002
> USBPORT!USBPORT_Core_UsbMapDpc_Worker+0x1e3
> 8078af48 842734f5 86c0d97c 86c0d002 00000000
> USBPORT!USBPORT_Xdpc_Worker+0x173
> 8078afa4 84273358 84334d20 85b91a70 00000000 nt!KiExecuteAllDpcs+0xf9
> 8078aff4 84272b1c 8c117700 00000000 00000000 nt!KiRetireDpcList+0xd5
> 8078aff8 8c117700 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2c
> WARNING: Frame IP not in any known module. Following frames may be wrong.
> 84272b1c 00000000 0000001a 00d6850f bb830000 0x8c117700
>
>
> STACK_COMMAND: kb
>
> FOLLOWUP_IP:
> USBPORT!USBPORT_Core_iMapTransfer+21e
> 8eafce70 8945f4 mov dword ptr [ebp-0Ch],eax
>
> SYMBOL_STACK_INDEX: 9
>
> SYMBOL_NAME: USBPORT!USBPORT_Core_iMapTransfer+21e
>
> FOLLOWUP_NAME: MachineOwner
>
> MODULE_NAME: USBPORT
>
> IMAGE_NAME: USBPORT.SYS
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc871
>
> FAILURE_BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e
>
> BUCKET_ID: 0x0_USBPORT!USBPORT_Core_iMapTransfer+21e
>
> Followup: MachineOwner
> ---------
>
> I can’t find something useful in the call stack to help me get around
> this.
> What else should I do to fix this problem? Any help would be appreciated.
> Thank in advance.
>
> –
> Danny
>

This is one of the common outcomes of pool corruption, typically a write-after-free bug. A driver writes to a freed allocation that is sitting on one of the pool SLISTs, and corrupts the SLIST chain. Some time later an unrelated ExAllocatePool call tries to pop an entry from this list and faults. Transient faults in SLIST code are expected so the system retries the operation but it just keeps faulting on the same corrupt entry. If the thread was running at DISPATCH level eventually you’ll get a DPC timeout.

The easiest way to debug these problems is to enable verifier/special pool.

I got a system hang as “DPC execution time exceeds system limit”.

nt!ExpInterlockedPopEntrySListFault:
8425206d 8b18 mov ebx,dword ptr [eax]
ds:0023:0000ca38=???

nt!KeAccumulateTicks+0x316
nt!KeUpdateRunTime+0x145
nt!KeUpdateSystemTime+0x613
nt!KeUpdateSystemTimeAssist+0x13
nt!KiTrap0E+0xbc
nt!ExpInterlockedPopEntrySListFault
nt!ExAllocatePoolWithTag+0x19a