错误检查 0x4000008A:THREAD_TERMINATE_HELD_MUTEX

THREAD_TERMINATE_HELD_MUTEX 错误检查的值为 0x4000008A。 这表明驱动程序在一个线程上获取了一个 Mutex,而该线程在释放 Mutex 之前就已退出。 造成这种情况的原因可能是驱动程序返回用户模式时没有释放 Mutex,或者是驱动程序获取 Mutex 后发生异常,从而导致正在运行的线程被终止。

重要

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

THREAD_TERMINATE_HELD_MUTEX 参数

参数 说明
1 拥有 KMUTEX 的 KTHREAD 的地址。
2 拥有的 KMUTEX 的地址。
3 Reserved
4 Reserved

原因

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

要进行调查,请查看调用堆栈。 如果堆栈上有一个驱动程序直接被系统异常处理例程和线程终止例程所跟踪,那么该驱动程序就存在问题并需要进行修复,以免在持有内核 Mutex 时导致未处理异常。 如果堆栈只显示正常的线程终止代码,而没有牵涉到驱动程序,请运行 !pool 或在 Mutex 地址(参数 2)上使用ln(列出最近符号),并查看是否能找到其所有者。 此错误几乎肯定会出现在该 Mutex 所有者的代码中。