终止代码:DPC-WATCHDOG-VIOLATION
Windows 中 BSOD 或其余死机的处理办法
一、介绍
BSOD(Blue Screen of Death),或称“蓝屏死机”(通常指 Windows NT内核系统)。是 Windows 操作系统中,当系统遇到严重的操作系统 / 硬件 / 软件 / 驱动程序错误,以至于无法继续正常并安全运行时,会出现这种状况。
但是请注意:Windows 9X 系统(包括 Windows 95, Windows 98, Windows ME),是由于内存管理问题,驱动程序冲突 / 故障,系统资源耗尽,软件程序故障引起的,与基于 Windows NT 技术的系统(Windows NT 4.0,Windows 2k(2000),Windows XP,Windows 7,Windows 8/8.1/10/11)等有显著的差别。
最明显的一点就是:在 Windows NT 内核上,蓝屏后会自动重启,并且提供程序来访问并分析 Dump File (比如 WinDBG),而在 Windows 9X 系统上,用户必须手动关闭电脑并重新启动。
二、错误分析
基于 MS-DOS 的系统的 BSOD
在基于 MS-DOS 之上构建的系统(比如 Windows 9X),由于系统的资源的管理和分配与当前 Windows NT 内核的资源管理/分配有很大的区别,出现 BSOD 的错误几率很大,包括但不限于以下原因:
- 设备驱动程序错误:如果用户使用了不稳定(比如停止支持的驱动程序)、不兼容的驱动程序,可能会导致系统崩溃。由于 Windows 9X 对系统的硬件访问的直接性高,所以驱动程序错误会导致系统无法正常访问硬件导致错误。
- 硬件故障:如果用户的电脑的内存条损坏、硬盘故障、CPU过热等会导致系统崩溃。
- 系统资源耗尽:由于 Windows 9X 的特性,对系统内存的保护过弱,用户态程序可以直接访问系统内存,导致内存损坏和系统崩溃。
- 软件冲突:若软件之间的不兼容、系统文件的损坏等,可能会导致系统的蓝屏。
Windows 9X 系统的蓝屏显示的信息比较简洁,不像 Windows 2000 - Windows 7 的蓝屏信息很多。针对于它的蓝屏信息,通常包括以下几点:
- 错误代码:表示当前系统遇到了什么错误
- 错误描述:简短的错误描述,告诉用户当前错误的基本信息
- (可能的解决方案):有的时候会给出一些基本的解决方案(比如重新启动电脑、检查硬件等)
当Windows 9X遭遇上述问题时,用户界面会显示特定的蓝屏信息以供诊断,下面展示两个典型的例子:
WARNING!
The system is either busy or has become unstable. You can wait and see if it becomes available again, or you can restart your computer.
* Press any key to return to Windows and wait.
* Press CTRL + ALT + DEL again to restart your computer. You will lose unsaved information in any programs that are running.
Press any key to continue.
这个蓝屏信息表示出了几个信息:
- 当前的错误描述:The system is either busy or has become unstable.
- 解决方案:You can wait and see if it becomes available again, or you can restart your computer.
当前这个信息,提示系统繁忙或不稳定,可能是因为某个进程占用过多资源导致其他程序无法正常运行,或系统处于高负载状态。
或者还有第二种蓝屏信息:
Windows
An exception 06 has occured at 0028:C11B3ADC in VxD DiskTSD(03) + 00001660. This was called from 0028:C11B40C8 in VxD voltrack(04) + 00000000. It may be possible to continue normally.
* Press any key to return to Windows and wait.
* Press CTRL + ALT + DEL again to restart your computer. You will lose unsaved information in any programs that are running.
Press any key to continue.
这个蓝屏信息包含了大量可供分析的信息:
- 异常说明:在 VxD(Virtual Device Driver)DiskTSD(03) + 00001660 处发生了代号为 06 的异常。
- 调用信息:该异常由 VxD voltrack(04) + 00000000 内存偏移处调用。
详细来看:
- 异常类型:异常 06 表示无效操作码(Invalid Opcode),这是 CPU 遇到无法识别的指令时产生的错误。
- VxD(虚拟设备驱动程序):VxD 是 Windows 9X 下的虚拟设备驱动程序。DiskTSD 和 voltrack 都是 VxD 的实例(Instance),分别处理磁盘相关操作和卷跟踪操作。
- 内存地址:0028:C11B3ADC 和 0028:C11B40C8 表示错误发生时的具体内存地址,这些地址可以帮助开发者或技术人员定位问题。
从这些信息中,可以推断出以下几点:异常发生在 DiskTSD 驱动程序中,具体位置是 00001660 偏移处;异常是由 voltrack 驱动程序在 00000000 偏移处的调用引起的。
根据这些信息,表明错误可能是由磁盘操作引起的,特别是与磁盘卷跟踪相关的操作。潜在原因可能包括:
- 磁盘驱动程序不兼容或损坏。
- 磁盘硬件故障。
- 软件冲突或系统文件损坏。
如果您真的还在用 Windows 9X (我相信已经没有人在用了),遇到这个错误可以尝试以下方案:
- 驱动错误:因为 Windows 9X 的错误很大概率是由于驱动程序错误产生的,所以需要尝试卸载并重新安装磁盘驱动程序。
- 硬件诊断:可以考虑使用 Microsoft ScanDisk 工具,检测磁盘是否有错误。
- 系统修复:运行系统文件检查工具(System File Checker,SFC)来修复损坏的系统文件。
总的来说,如果在 Windows 95,Windows 98,Windows ME 系统上遇到 BSOD 后,尝试以下步骤来修复电脑:
- 尝试重新启动电脑:如第一个例子所示,第一个蓝屏信息是由于系统资源耗尽所导致的电脑蓝屏,尝试重新启动电脑,通过重启来释放系统资源可能会解决问题。但是缺点也很明显:如果在工作没有保存的情况下,直接重新启动电脑可能会丢失你的信息。
- 尝试卸载驱动:由于在 MS-DOS 系统上,对硬件的访问程度较高,如果驱动程序错误或不兼容,会导致系统无法通过驱动程序提供的接口来访问硬件。所以需要卸载当前驱动,使用更新的驱动或兼容的驱动来解决问题。
基于 Windows NT 内核技术的系统 BSOD
在 Windows NT 内核上,BSOD 发生了很大的改变。
首先是错误信息:在 MS-DOS 基础上构建的系统,内容都很简洁干净。而到了 Windows NT 内核的操作系统上,内容增添了很多,增加了很多的信息。比如接下来的例子:
(Windows 2000)
*** STOP: 0x000000C5 (0x0000000, 0x0000002, 0x0000001, 0x8046BC9E)
A device driver has corrupted the executive memory pool.
If this is the first time you've seen this Stop error screen, restart your computer. If this screen appears again, follow these steps:
Check to make sure any new hardware or software is properly installed. If this is a new installation, ask your hardware or software manufacturer for any Windows 2000 updates you might need.
Run the driver verifier against any new (or suspect) drivers. If that doesn't reveal the corrupting driver, try enabling special pool. Both of these features are intended to catch the corruption at an erlier point where the offending driver can be identified.
If you need to use Safe Mode to remove or disable components, restart your computer, press F8 to select Advanced Startup Option, and then select Safe Mode.
Refer to your Getting Started manual for more information on troubleshooting Stop errors.
*** Address 8046BC9E base at 80400000, DateStamp 4047db83 - ntoskrnl.exe
可以清楚的看到在 Windows NT 内核上的 BSOD 信息已经丰富了不少,包括了以下内容:
- 错误代码:0x000000C5 (或DRIVER_CORRUPTED_EXPOOL),表示某个设备驱动程序尝试访问无效的内存地址。
- 错误描述:A device driver has corrupted the executive memory pool. (设备驱动程序已损坏执行内存池。)
- 可能的解决办法:从第三段到倒数第二段(包括重启电脑(第三段),检查更新(第四段),检查驱动(第五段),进入安全模式禁用驱动(第六段),参考用户手册(第七段))
让我们来仔细分析一下:
- 错误代码,包括四个参数:
- 尝试访问的内存地址:0x00000000
- 访问类型:0x00000002(内存读写操作中的“读”操作)
- 保留校验码:0x0000001
- 引发错误的驱动程序地址:0x8046BC9E
通过这四个参数,可以看出驱动程序想要访问并读取内存中的数据,但是出现了问题无法进行操作,所以导致了错误发生。
- 内核模块信息:Address 8046BC9E base at 80400000, DateStamp 4047db83 - ntoskrnl.exe
- 发生错误的内存地址:8046BC9E
- ntoskrnl.exe 的内存基址(Base Address):80400000
- ntoskrnl.exe 的时间戳:4047db83 (一个十六进制数,表示该程序的编译时间)
- 触发错误的模块名称:ntoskrnl.exe (NT Operating-System Kernel,Windows NT内核的操作系统的核心文件,负责系统服务、内存管理、硬件抽象层(HAL)、进程和线程管理等)
既然是 ntoskrnl.exe 出现了错误,那我们结合第一个错误代码来推断一下错误原因:
- 设备驱动程序问题:驱动程序可能试图访问无效内存地址,导致内核崩溃。驱动程序与内核紧密交互,因此不稳定的驱动程序会引发此类问题。
- 软件冲突:某些软件,特别是系统级别的软件(如防病毒软件、系统监控工具)可能与内核发生冲突。
- ntoskrnl.exe 损坏:ntoskrnl.exe 或其他关键系统文件损坏或被替换可能导致内核错误。
- 硬件问题:内存故障、硬盘错误或其他硬件问题可能导致内核模块执行错误。
- 内存超频或坏模块:如果内存超频,可能导致系统不稳定并引发此错误;内存模块出现故障,导致驱动程序读取或写入错误位置。
所以我们通过第一点的四个参数,了解到了错误原因:程序访问无效的内存地址,错误程序:ntoskrnl.exe,那我们就可以着手修复了。
我们可以通过以下方法来修复错误:
- 更新或回滚驱动程序:如果你的驱动程序很老,请尝试更新驱动程序到最新版本;如果驱动程序刚安装结束,考虑回滚到上一个或其他以前的版本。
- 检查内存:使用内存测试工具(比如 MemTest86+)检测内存问题
- 检查磁盘和系统文件:使用 chkdsk 工具检查并修复系统的错误文件
那么这个错误就分析完成了,着手修复就可以了。
当然,到了 Windows 8 及以上系统,BSOD 界面又发生了很大的变化,并且多了本地化的支持。类似于这样:
(英文版本)
:(
Your PC ran into a problem and needs to restart. We're collecting some error info, and then you can restart. (100% Complete).
You can search for the error online: KERNEL_DATA_INPAGE_ERROR
(中文版本(或者其他的本地化版本,都一样,我就不列举了))
:(
你的电脑遇到问题,需要重新启动。(100% 完成)
我们只收集某些错误信息,然后你可以重新启动。
如果你想了解更多信息,则可以稍后在线搜索此错误:KERNEL_DATA_INPAGE_ERROR
在这里,信息又变得简洁了。如果想要处理问题,还是需要搜索错误代码:KERNEL_DATA_INPAGE_ERROR (0x0000007A)
让我们分析一下错误原因:
- 虚拟内存损坏:页面文件中可能存在坏簇或损坏的扇区,导致内核数据无法正确读取。
- 系统文件损坏:与内存管理相关的系统文件可能遭到破坏,影响正常的虚拟内存数据页面交换操作。
- 内存问题:尽管错误名称暗示是数据读取问题,但有时也可能是内存(RAM)故障或不兼容导致。
- 硬盘故障:硬盘驱动器本身可能存在物理损坏或逻辑错误,影响数据的读取。
针对于这个错误,我们可以从原因入手,找到正确的处理问题的方法:
- 磁盘检查:使用chkdsk /f /r命令检查并修复硬盘错误。
- 内存诊断:运行Windows内存诊断工具检查内存是否存在问题。
- 硬盘/硬件连接:如果你的硬盘是机械硬盘,检查 SATA 线是否插牢,线材老化考虑换线材;如果是固态硬盘,检查硬盘柱是否松动,重新检查 M.2 螺丝是否拧紧。
- 系统还原或重装:如果其他方法无效,考虑使用系统还原点恢复系统或重新安装操作系统。
那么这个错误就也分析完成了,着手修复就可以了。
三、错误参考
我们在上一节已经写出了如何进行分析错误和阅读错误报告,在这一节,就是查找你电脑的错误原因。我会列出错误代码、原因和解决办法,请您查找一下并按照步骤进行修复:
| 错误代码 | 错误原因 | 解决办法 |
|---|---|---|
| APC_INDEX_MISMATCH | 内核模式的异步过程调用(APC)索引不匹配 | 1. 更新所有设备驱动程序,尤其是显卡和声卡驱动。 <br>2. 更新 Windows 版本 <br>3. 用 sfc 检查系统文件完整性 <br>4. 禁用或移除新安装的硬件 |
| DEVICE_QUEUE_NOT_BUSY | 驱动程序没有正确处理队列请求 | 1. 更新或重新安装有问题的设备驱动程序 <br>2. 使用设备管理器禁用并重新启用相关设备 <br>3. 检查设备制造商的网站是否有驱动程序更新或补丁 <br>4. 确保新硬件兼容性并安装正确的驱动程序 |
| INVALID_AFFINITY_SET | CPU亲和性错误 | 1. 检查BIOS设置,确保没有禁用CPU核心或改变处理器亲和性 <br>2. 更新主板BIOS 以及其他驱动程序 <br>3. 检查是否有第三方软件在管理CPU亲和性,尝试禁用或卸载 |
| INVALID_DATA_ACCESS_TRAP | 访问无效内存地址或内存损坏 | 1. 检查并替换有问题的内存条,使用内存测试工具如MemTest86进行检测 <br>2. 更新驱动程序 <br>3. 运行Windows内置的内存诊断工具 |
| INVALID_PROCESS_ATTACH_ATTEMPT 或 <br>INVALID_PROCESS_DETACH_ATTEMPT | 内核模式代码尝试附加或分离一个无效的进程 | 1. 更新驱动程序 <br>2. 使用 sfc 和 chkdsk 修复硬盘和系统文件 <br>3. 卸载或禁用新安装的程序或硬件 |
| INVALID_SOFTWARE_INTERRUPT | 软件尝试执行一个无效的中断请求 | 1. 检查最近安装的软件或驱动程序,并尝试卸载它们以排除问题<br><br>2. 更新 Windows |
| IRQL_NOT_GREATER_OR_EQUAL 或 <br>IRQL_NOT_LESS_OR_EQUAL | 驱动程序尝试在过高的中断请求级别(IRQL)访问内存 | 1. 使用“设备管理器”更新或回滚问题驱动程序<br><br>2. 运行Windows内存诊断工具检查内存<br><br>3. 覆盖安装驱动程序(一定记住备份当前驱动程序)(来自于wang_hong,非常感谢!) |
| MAXIMUM_WAIT_OBJECTS_EXCEEDED | 系统等待的线程或进程数量超过了最大限制 | 1. 检查是否有资源泄露的应用程序<br><br>2. 减少同时运行的任务数量<br><br>3. 更新相关软件或驱动 |
| MUTEX_LEVEL_NUMBER_VIOLATION | 互斥锁使用不当 | 更新所有驱动 |
| SPIN_LOCK_ALREADY_OWNED 或 <br>SPIN_LOCK_NOT_OWNED | 线程同步失败 | 1. 更新操作系统和相关驱动程序<br><br>2. 考虑恢复到最近的系统还原点 |
| ATTEMPTED_WRITE_TO_READONLY_MEMORY | 驱动程序试图写入到内存中的只读部分 | 1. 在安全模式下卸载驱动程序并重新安装<br><br>2. 更新驱动程序 |
| TRAP_CAUSE_UNKNOWN | 未知的陷阱错误 | 1. 检查硬件连接<br><br>2. 尝试安全模式下启动以隔离问题 |
| BAD_POOL_HEADER | 内存管理错误,池头已损坏 | 1. 使用内存诊断工具诊断原因<br><br>2. 考虑卸载新安装的程序<br><br>3. 重新安装系统 |
| MEMORY_MANAGEMENT | 内存管理出现问题,如坏块或驱动程序冲突 | 1. 检查硬件<br><br>2. 更新驱动<br><br>3. 使用 sfc 修复文件 |
| KMODE_EXCEPTION_NOT_HANDLED | 内核模式驱动程序引发未处理的异常 | 进入安全模式,更新或卸载问题驱动程序 |
| FILE_SYSTEM 以及其他 FAT/NTFS/NPFS_FILE_SYSTEM类似的错误 | 文件系统损坏或硬盘问题 | 1. 使用 chkdsk 修复磁盘<br><br>2. 进入 PE 或安全模式后,备份数据后格式化磁盘 |
| PANIC_STACK_SWITCH | 严重的系统初始化失败 | 重新安装操作系统 |
| PHASE0_INITIALIZATION_FAILED 或<br><br>PHASE1_INITIALIZATION_FAILED | 严重的系统初始化失败 | 重新安装操作系统 |
| DEVICE_REFERENCE_COUNT_NOT_ZERO | 设备驱动程序未能正确释放资源 | 进入安全模式下,重新安装 / 卸载问题设备驱动 |
| NO_SUCH_PARTITION | 没有硬盘分区 | 1. 进入 PE 系统后修改分区<br><br>2. 在 Windows 安全模式中,找到引用到非法磁盘的程序卸载掉 |
| NO_PAGES_AVAILABLE | 内存分页文件不足 | 1. 重启电脑后,添加虚拟内存<br><br>2. 添加物理内存 |
| NO_BOOT_DEVICE | 没有启动设备 | 1. 检查内存<br><br>2. 重新安装系统 |
| SESSION1_INITIALIZATION_FAILED 或其他 <br>SESSION (Number)_INITIALIZATION_FAILED | 会话管理系统损坏 | 1. 安全模式下还原系统<br><br>2. 重新安装系统 |
| BAD_SYSTEM_CONFIG_INFO | 系统配置信息损坏 | 1. 使用启动修复功能(在进入Windows徽标前,强制断电并重启多次进入启动修复功能修复系统)<br><br>2. 重新安装或回滚到上一个系统还原点 |
| CANNOT_WRITE_CONFIGURATION | 系统尝试写入配置信息时失败 | 1. 检查硬盘权限和空间<br><br>2. 使用系统恢复选项 |
这些是我在 Windows 中遇到的严重错误,如果还有其他错误,在下方告诉我,我会帮您解决问题。
Windows 家庭版 | 其他 | “应用”
锁定的问题。 此问题已从 Microsoft 支持社区迁移。 你可投票决定它是否有用,但不能添加评论或回复,也不能关注问题。
-
匿名
2024-09-21T15:50:47+00:00 -
匿名
2024-09-19T12:00:17+00:00 错误代码为PAGE_FAULT_IN_NONPAGED_AREA,
失败操作:ACE SSC DRV64.sys
-
匿名
2024-09-12T13:02:30+00:00 SYSTEM SERVICE_EXCEPTION
-
匿名
2024-08-30T13:20:04+00:00 有大佬知道咋搞吗
-
匿名
2024-08-30T13:19:23+00:00 终止代码:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED