Exqueue仅显示强制内存转储上的等待工作线程

时间:2016-03-09 23:11:35

标签: debugging windbg crash-dumps memory-dump

我通过强制完全内存转储(ctrl + scrl + scrl方法)来调试系统挂起/冻结问题,而我并不了解某些数据。

当我运行时!exqueue 6我看到6个Critical,8个Delayed和1个HyperCritical线程但每个都包含一个类似的堆栈,只有以下调用:

nt!KiSwapContext+0x7a
nt!KiCommitThreadWait+0x1d2
nt!KeRemoveQueueEx+0x323
nt!ExpWorkerThread+0xe9
nt!PspSystemThreadStartup+0x5a
nt!KxStartSystemThread+0x16

据我所知,这些都是创建但没有任何工作的线程,对吧?

这是转储时系统上实际发生的情况,还是仅仅是使用此方法强制转储的影响?

这也是为什么在空闲PID和断点下唯一正在运行的线程实际上是英特尔?

                        [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

我似乎无法准确了解工作队列或转储时运行线程的情况。我是否误解了这些数据,还是因为它被捕获了?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在启动过程中,系统会自动创建许多系统线程。稍后系统可以根据负载认为有必要创建更多系统线程。 您正在显示的系统线程现在没有任何事情要做,但它们可能早先很忙。我不认为(6,8,1)线程表示任何异常wrt。负荷。

正在执行intelppm的3个线程处于空闲状态,然后很可能是权力崩溃了。

系统可能有其他原因导致无响应而不是高负载。有时只需要一个线程陷入僵局。所以也许看看其他线程在做什么,以及其中任何一个线程是否有一个“可疑”的调用堆栈。在执行错误检查之前,核心0(执行错误检查)还做了什么特别的事情吗?