I'm debugging a system hang/freeze issue by forcing a complete memory dump (ctrl + scrl + scrl method) and I don't understand some of the data.
When I run !exqueue 6 I see 6 Critical, 8 Delayed and 1 HyperCritical thread but each contains a similar stack with only the following calls:
nt!KiSwapContext+0x7a
nt!KiCommitThreadWait+0x1d2
nt!KeRemoveQueueEx+0x323
nt!ExpWorkerThread+0xe9
nt!PspSystemThreadStartup+0x5a
nt!KxStartSystemThread+0x16
To my knowledge these are all threads that were created but not given any work, right?
Is this what is actually happening on the system at the time of the dump or is this just the effects of forcing a dump with this method?
Is this also why the only running threads are actually intelppm under the Idle PID and the breakpoint?
[fffff80003617180 Idle]
0.000000 fffff80003616cc0 ffff8835 RUNNING nt!KeBugCheckEx
0.000000 fffff880009f9fc0 ffff92bb RUNNING intelppm!MWaitIdle+0x19
0.000000 fffff88002f6ffc0 ffff9191 RUNNING intelppm!MWaitIdle+0x19
0.000000 fffff88002fe1fc0 ffff93c4 RUNNING intelppm!MWaitIdle+0x19
It doesn't seem like I'm actually getting an accurate picture of the work queue or running threads at the time of the dump. Am I misinterpreting the data or is it all because of how it was captured?
Any help would be appreciated.