Bug 检查 0x7F:UNEXPECTED_KERNEL_MODE_TRAP

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

此陷阱可能是绑定的 陷阱 (不允许 内核捕获) 或双 错误 (处理 早期错误时发生的错误,这始终会导致系统故障) 。

重要

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

UNEXPECTED_KERNEL_MODE_TRAP参数

参数 1

蓝屏上显示的第一个参数指定陷阱编号。

最常见的陷阱代码包括:

参数 陷阱代码 说明
0x00000000 被零除错误 指示执行 DIV 指令,并且除数为零。 内存损坏、其他硬件问题或软件故障可能会导致此错误。
0x00000004 溢出 当设置了 OF 标志的溢出时,处理器 (对) 调用时发生。
0x00000005 边界检查错误 指示处理器在执行 BOUND 指令时发现操作数超出了指定的限制。 BOUND 指令可确保有签名数组索引在特定范围内。
0x00000006 操作码无效 指示处理器尝试执行无效指令。 当指令指针损坏并指向错误的位置时,通常会发生此错误。 此错误最常见的原因是硬件内存损坏。
0x00000008 双错误 指示在前一异常的处理程序调用期间发生异常。 通常,这两个异常是串行处理的。 但是,有几个异常无法串行处理,在这种情况下,处理器会发出双重错误信号。 双错误有两个常见原因:1。 内核堆栈溢出。 当命中保护页并且内核尝试推送陷阱帧时,会发生此溢出。 由于没有堆栈,因此会导致堆栈溢出,从而导致双倍错误。 如果认为已发生此情况,请使用 !thread 确定堆栈限制,然后将 kb (Display Stack Backtrace) 与大型参数一起使用 (例如 kb 100) 以显示整个堆栈。 2. 另一个常见原因是硬件问题。

不太常见的陷阱代码包括:

  • 0x00000001 -- 系统调试器调用

  • 0x00000003 -- 调试器断点

  • 0x00000007 - 不存在协处理器的硬件协处理器指令

  • 0x0000000A -- 损坏的任务状态段

  • 0x0000000B - 对不存在的内存段的访问

  • 0x0000000C - 访问超出堆栈限制的内存

  • 0x0000000D -- 其他异常未涵盖的异常;与应用程序的访问冲突相关的保护错误

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

原因

安装0x7F或不匹配的硬件后,通常会进行 bug 检查 (尤其是内存) 安装的硬件出现故障。

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

调试

始终以 !analyze 扩展开头 ,使用 verbose -v 选项。 检查输出和错误代码。 如果存在多个转储,请查找重新出现的趋势。

如果 !analyze 不足,请使用 kv 命令 (显示堆栈回溯) 调试器命令。

  • 如果 kv 显示 taskGate,请使用 .tss (在 冒号前的部件) 显示任务状态段" 命令。

  • 如果 kv 显示陷阱帧,请使用 .trap (Display Trap Frame) 命令设置帧的格式。

  • 否则,请使用 .trap (显示陷阱帧) 相应帧上的 命令。 (基于 x86 的平台上,此帧与过程 NT 相关联!KiTrap.)

使用这些命令之一后,再次 使用 kv 显示新堆栈。

故障排除

硬件

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

内存错误或不匹配可能会导致此 bug 检查。 使用内存中的内存诊断Windows测试所有系统内存。

确认所有硬盘驱动器、硬盘控制器均与已安装版本的Windows。

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

过度锁定 (CPU 以高于所评分规范的速度运行) 可能会导致此错误。 如果过度锁定遇到错误的计算机,将 CPU 返回到默认时钟速度设置。 还可以禁用 BIOS 的内存缓存,以尝试在该选项可用时解决问题。

软件

检查系统登录事件查看器,了解其他错误消息,这些错误消息可帮助识别导致错误的设备或驱动程序。

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

如果在安装新的或更新的设备驱动程序后发生错误,应删除或替换该驱动程序。 在这种情况下,如果错误发生在启动序列中,则你可能能够使用 保险箱 模式重命名或删除错误的驱动程序。 如果驱动程序在 保险箱 模式下用作系统启动过程的一部分,则你必须使用恢复控制台启动计算机才能访问该文件。 你可能想要尝试"上次 已知良好配置" 选项。 如果一次只添加一个驱动程序或服务,则此选项最有效。

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

另请参阅

!analyze

Bug 检查代码参考