Bug 检查 0x7F:UNEXPECTED_KERNEL_MODE_TRAP

UNEXPECTED_KERNEL_MODE_TRAP Bug 检查的值为 0x0000007F。 此 Bug 检查表明 Intel CPU 生成了陷阱,而内核未能捕获此陷阱。

此陷阱可以是以下任何一种:

  • 绑定陷阱,这是不允许内核捕获的陷阱。
  • 双重故障,这是处理较早的错误时发生的错误,它总是会导致系统故障。

重要

本主题是面向程序员的。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

参数 1

蓝屏上出现的第一个参数指定了陷阱编号。

最常见的陷阱编号是以下代码:

参数 陷阱代码 说明
0x00000000 除以零误差 表示执行 DIV 指令并且除数为零。 内存损坏、其他硬件问题或软件故障都可能会导致此错误。
0x00000004 溢出 当处理器在设置溢出 (OF) 标志时执行对中断处理程序的调用时发生。
0x00000005 边界检查错误 表示处理器在执行 BOUND 指令时发现操作数超出了指定的限制。 BOUND 指令确保有符号数组索引在特定范围内。
0x00000006 操作码无效 表明处理器尝试执行无效指令。 当指令指针损坏并指向错误的位置时,通常会发生此错误。 此错误的最常见原因是硬件内存损坏。
0x00000008 双故障 表明在调用先前异常的处理程序时发生异常。 通常,这两个异常是串行处理的。 有多个异常无法串行处理,因此处理器发出双重故障信号。

出现双重故障的常见原因有两个:

  • 第一个原因是内核堆栈溢出。 当防护页被命中并且内核尝试推送陷阱帧时,会发生此溢出。 由于没有剩余堆栈,因此堆栈溢出会导致双重故障。 如果认为这种情况已发生,请使用 !thread 扩展来确定堆栈限制,然后使用具有较大值(例如 kb 100)的 kb(显示堆栈回溯) 命令来显示完整堆栈。
  • 第二个常见原因是硬件问题。

不常见的陷阱代码包括以下值:

  • 0x00000001:系统调试器调用 (DEBUG)
  • 0x00000003:调试器断点 (INT3)
  • 0x00000007:没有协处理器存在的硬件协处理器指令 (NXP_NOT_AVAILABLE)
  • 0x0000000A:已损坏的任务状态段 (INVALID_TSS)
  • 0x0000000B:访问不存在的内存段 (SEGMENT_NOT_PRESENT)
  • 0x0000000C:超出堆栈限制的内存访问 (STACK_FAULT)
  • 0x0000000D:其他异常未涵盖的异常,与应用程序访问冲突相关的保护错误 (GP_FAULT)
  • 0x0000000F:保留陷阱异常 (RESERVED_TRAP)
  • 0x00000010:硬件协处理器异常 (NPX_ERROR))
  • 0x00000011:对齐检查异常 (ALIGNMENT_CHECK)

有关其他陷阱编号,请参阅要排除故障的处理器的 Intel 处理器体系结构手册。

原因

Bug 检查 0x7F 通常在安装了故障或不匹配的硬件(尤其是内存)或安装的硬件出现故障后发生。

当内核堆栈溢出时,可能会出现双重故障。 如果多个驱动程序附加到同一堆栈,则会发生此溢出。 例如,如果两个文件系统筛选器驱动程序附加到同一堆栈,然后文件系统递归回来,堆栈就会溢出。

调试

始终以 !analyze扩展开始,并使用 -v 选项,即 verbose。 检查输出和故障代码。 查找多个转储中重复出现的趋势。

尝试 !analyze 后,请使用 kv (显示堆栈回溯) 调试器命令。

使用其中一个命令后,再次使用 kv 来显示新堆栈。

疑难解答

硬件

如果您最近为计算机添加了硬件,请将其删除后查看错误是否再次出现。 如果现有硬件出现故障,请卸下或更换故障部件。 运行系统制造商提供的硬件诊断程序,以确定哪个硬件组件出现故障。

内存故障或不匹配可能会导致此 Bug 检查。 使用 Windows 中的内存诊断程序测试所有系统内存。

确保所有硬盘驱动器和硬盘驱动器控制器都与已安装的 Windows 版本兼容。

系统主板可能存在问题,例如组件有划痕或缺陷。 电源故障也可能导致问题。

超频 是将 CPU 设置为以高于额定规格的速度运行,这可能会导致此错误。 如果已对遇到错误的计算机进行超频,请将 CPU 恢复到默认时钟速度设置。 如果此选项可用,请禁用 BIOS 的内存缓存,以尝试解决问题。

软件

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

检查硬件制造商提供的 ACPI/BIOS、硬盘驱动程序控制器或网卡更新的可用性。

如果安装新的或更新的设备驱动程序后出错,请删除或更换驱动程序。 在这种情况下,如果在启动序列时发生错误,请使用安全模式重命名或删除错误的驱动程序。 如果在安全模式下将驱动程序用作系统启动过程的一部分,请使用恢复控制台启动计算机以访问文件。 尝试使用“最近一次的正确配置”选项。 一次只添加一个驱动程序或服务时,此选项最有效。

如果在升级到新版本的 Windows 操作系统时遇到此错误,则此错误可能是由于软件不兼容造成的。 示例包括设备驱动程序、系统服务、病毒扫描程序或备份工具。 如果可能,请在升级之前删除所有第三方设备驱动程序和系统服务,并禁用所有病毒扫描程序。 请联系软件制造商获取这些工具的更新。 此外,请确保已安装最新的 Windows 更新。

另请参阅