bug CRITICAL_PROCESS_DIED
检查的值为 0x000000EF。 此检查表示关键系统进程已终止。 关键进程会强制系统在系统终止时进行 bug 检查。 当进程的状态损坏或损坏时,将进行此检查。 当损坏或损坏发生时,由于这些进程对 Windows 的运行至关重要,因此会进行系统错误检查,因为作系统的完整性存在问题。
内置的 Windows 关键系统服务包括 csrss.exe、 wininit.exe、 logonui.exe、 smss.exe、 services.exe、 conhost.exe和 winlogon.exe。
开发人员还可以创建服务并将其恢复选项设置为 Restart the Computer。 有关更多信息,请参阅 设置在服务失败时执行的恢复作。
重要
本主题面向程序员。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答。
CRITICAL_PROCESS_DIED参数
参数 | DESCRIPTION |
---|---|
1 | 进程对象 |
2 | 如果为 0,则进程终止。 如果为 1,则线程终止。 |
3 | 已预留 |
4 | 已预留 |
决议
确定此问题的原因通常需要使用调试器来收集其他信息。 您应该检查多个转储文件,以查看此停止代码是否具有相似的特征,例如,当停止代码出现时正在运行的代码。
有关详细信息,请参阅使用 Windows 调试器进行故障转储分析 (WinDbg)、使用 !analyze 扩展和 !analyze。
在许多情况下,在系统 bug 检查之前还会创建用户转储。 通常,当用户转储可用时,应首先检查该转储以查找问题的根本原因。 从内核转储调试用户模式代码存在限制,包括分页/缺失数据。 有关更多信息,请参阅 User-Mode 转储文件。
请考虑使用事件日志来查看是否存在导致此停止代码的错误。 如果存在,则可以使用这些错误来检查特定服务或其他代码以进行调查。
一旦有关相关代码的信息可用,请在执行此代码之前在相关代码中设置一个断点。 从那里,单步前进代码,查看用于控制代码流的关键变量的值。 仔细检查代码的这一区域,以查找错误的假设或其他错误。
使用 bug 检查的第二个参数来确定 bug 检查是否是由即将消亡的进程或线程引起的。
如果它是一个进程,请使用 !process 命令显示故障点之前和之后的进程信息,以查找异常行为。 Process explorer 实用程序可以收集有关父子关系和正在运行的进程的一般信息。
如果它是一个线程,请考虑使用 !thread 命令来显示有关该线程的信息。 有关内核模式下的线程的信息,请参阅 更改上下文。
有关线程、进程以及受 Windows 保护的关键代码(如 wininit 和 csrss)的其他细节的一般信息,请参阅 Pavel Yosifovich、Mark E. Russinovich、David A. Solomon 和 Alex Ionescu 的 Windows 内部 。
常规疑难解答技巧
如果您无法使用调试器,这些常规故障排除提示可能会有所帮助。
如果您最近向系统添加了硬件,请尝试删除或更换该硬件。 您还可以与制造商联系,查看是否有任何补丁可用。
如果最近添加了新的设备驱动程序或系统服务,请尝试删除或更新它们。 尝试确定系统中导致新错误检查代码出现的原因。
检查事件查看器中的系统登录是否有其他错误消息,这些消息可能有助于查明导致错误的设备或驱动程序。 在系统日志中查找与蓝屏同时出现的严重错误。
请与制造商联系,查看是否有更新的系统 BIOS 或固件可用。
尝试运行系统制造商提供的硬件诊断程序。
确保安装的任何新硬件都与已安装的 Windows 版本兼容。 例如,可以在 Windows 10 规范中获取所需硬件的相关信息。
运行病毒检测程序。 病毒可以感染为 Windows 格式化的所有类型的硬盘。 由此产生的磁盘损坏可能会生成系统 bug 检查代码。 确保病毒检测程序检查主启动记录是否存在感染。
使用 系统文件检查器 工具修复丢失或损坏的系统文件。 系统文件检查器是 Windows 中的一个实用程序,允许用户扫描 Windows 系统文件中的损坏并恢复损坏的文件。 使用以下命令运行 系统文件检查器 工具 (SFC.exe)。
SFC /scannow
有关详细信息,请参阅使用系统文件检查器工具修复丢失或损坏的系统文件。
在设备管理器中查看是否有任何设备标有感叹号 (!)。 查看驱动程序属性中显示的事件日志,以查找任何故障驱动程序。 请尝试更新相关驱动程序。