错误检查 0xEA:THREAD_STUCK_IN_DEVICE_DRIVER

THREAD_STUCK_IN_DEVICE_DRIVER 错误检查的值为 0x000000EA。 这表示设备驱动程序中的线程在无休止地旋转。

重要

这篇文章适合程序员阅读。 如果你是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

THREAD_STUCK_IN_DEVICE_DRIVER 参数

参数 说明

1

指向停滞线程对象的指针

2

指向 DEFERRED_WATCHDOG 对象的指针

3

指向有问题的驱动程序名称的指针

4

在内核调试器中:命中“拦截”错误 0xEA 次数

在蓝屏上:1

原因

设备驱动程序在无限循环中旋转,最有可能等待硬件处于空闲状态。

这通常表明硬件本身有问题,或者设备驱动程序对硬件编程不正确。 通常情况下,这是由于视频卡或显示器驱动程序不佳造成的。

解决方法

!analyze 调试扩展显示有关错误检查的信息,并有助于确定根本原因。

.thread(设置寄存器上下文)命令与参数 1 一起使用。 然后使用 kb(显示堆栈回溯)查找线程停滞的位置。

如果内核调试器已连接并在 Windows 检测到超时条件时运行。 则会调用 DbgBreakPoint,而不是 KeBugCheckEx。 将向调试器输出详细消息。 有关详细信息,请参阅将输出发送到调试器

此消息将包括错误检查参数。 由于没有发出实际的错误检查,因此 .bugcheck(显示错误检查数据)命令将无效。 还可以通过在 32 位系统上使用 dd watchdog!g_WdBugCheckData L5" 从 Watchdog 的全局变量检索四个参数,或者在 64 位系统上使用 dq watchdog!g_WdBugCheckData L5"。

以这样的交互式方式调试此错误可帮助找到有问题的线程,在其中设置断点,然后使用 g (Go) 返回到旋转代码以进一步调试。

在多处理器计算机(操作系统版本 3790 或更早版本)上,如果旋转线程因硬件中断而中断,并且在错误检查时 ISR 或 DPC 例程正在运行,则可能会超时。 这是因为超时的工作项可以同时在第二个 CPU 上交付和处理。 如果发生这种情况,则必须更深入地查看有问题线程的堆栈,以确定导致超时的旋转代码。 使用 dds(显示字词和符号)命令执行此操作。