Bug 检查 0x7E:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED Bug 检查的值为 0x0000007E。 此 Bug 检查表明系统线程产生了错误处理程序未捕获的异常。

重要

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

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED 参数

参数 说明
1 未处理的异常代码。
2 发生异常的地址。
3 异常记录的地址。
4 上下文记录的地址。

原因

此 Bug 检查表明系统线程产生了错误处理程序未捕获的异常。 若要对其进行解释,必须确定生成的具体异常。

常见的异常代码如下:

  • 0x80000002:STATUS_DATATYPE_MISALIGNMENT 表示遇到未对齐的数据引用。

  • 0x80000003:STATUS_BREAKPOINT 表示在未将内核调试器附加到系统时遇到断点或 ASSERT。

  • 0xC0000005:STATUS_ACCESS_VIOLATION 表示发生了内存访问冲突。

有关异常代码的完整列表,请参阅 NTSTATUS 值。 异常代码在 ntstatus.h(Windows 驱动程序工具包提供的标头文件)中定义。 有关详细信息,请参阅 Windows 驱动程序工具包中的头文件

解决方法

如果计划调试此问题,异常地址(参数 2)应标识导致此问题的驱动程序或函数。

如果 Bug 检查消息中按名称列出了某个驱动程序,请禁用或删除该驱动程序。 如果问题缩小到单个驱动程序,请在代码中设置断点并单步前进,以定位故障并深入了解导致崩溃的事件。

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

可以使用 !thread 扩展以及 dds、dps 和 dqs(显示字词和符号) 命令完成更多分析。 当 WinDbg 报告“可能由:ntkrnlmp.exe 引起”时,此技术是合理的。

如果出现异常代码 0x80000003,则表示命中了硬编码断点或断言,但系统是使用 /NODEBUG 开关启动的。 此问题应该不会经常发生。 如果重复发生,请确保内核调试器已连接,并且已使用 /DEBUG 开关启动系统。

如果出现异常代码 0x80000002,陷阱帧会提供更多信息。

有关 WinDbg 和 !analyze 的详细信息,请参阅:

注解

如果您不具备使用 Windows 调试器来解决此问题的能力,则应使用一些基本的故障排除技术:

  • 在事件查看器中检查系统日志以获取更多错误消息,这可能有助于识别导致 Bug 检查 0x7E 的设备或驱动程序。

  • 如果在 bug 检查消息中标识了驱动程序,请禁用该驱动程序,或与制造商联系以获取驱动程序更新。

  • 请咨询硬件供应商,了解是否有任何 ACPI 或其他固件更新。 硬件问题(如系统不兼容、内存冲突和 IRQ 冲突)也可能导致此错误。

  • 禁用 BIOS 的内存缓存/重影,尝试解决错误。 还可以运行系统制造商提供的硬件诊断程序。

  • 确保安装的任何新硬件都与已安装的 Windows 版本兼容。 例如,可以在 Windows 10 规范中获取所需硬件的相关信息。

有关常规故障排除的更多信息,请参阅 蓝屏数据