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

Exqueue shows only waiting worker threads on forced memory dump

我正在通过强制完全内存转储(ctrl + scrl + scrl 方法)调试系统 hang/freeze 问题,但我不理解某些数据。

当我 运行 !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

据我所知,这些都是已创建但未提供任何工作的线程,对吗?

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

这也是为什么只有运行ning线程在Idle PID和断点下实际上是intelppm的原因吗?

                        [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

似乎我实际上并没有准确了解转储时的工作队列或 运行ning 线程。我是不是误解了数据,还是因为它是如何被捕获的?

如有任何帮助,我们将不胜感激。

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

执行 intelppm 的 3 个线程处于空闲状态,然后很可能电源崩溃了。

除高负载外,系统无响应可能还有其他原因。有时只需要一个线程就死锁了。因此,也许看看其他线程在做什么,以及它们中的任何一个是否具有 "suspicious" 看起来的调用堆栈。核心 0(执行错误检查)在执行错误检查之前是否做了任何特殊的事情?