Introductory Chapter

望周知,鄙人最近斥巨资配置了一台海景房,摆在宿舍里享受单身生活。😋

然而,天有不测风云,从某天开始电脑突然变得神神鬼鬼,关键表现就是不定期会出现和 explorer 的交互卡住,包括呼出任务管理器等功能。

我一开始也没去管,虽然心里有各种各样的猜测,比如最近有安装了虚拟机 docker 用 cpu 炼小丹,是不是一训几个小时给锻炼坏了;又或者是技嘉的某某驱动又发生兼容性问题了;再或者是公司强行安装的入网安全小助手发生了内存泄漏云云。总的来说,还不至于影响日常使用。

直到某一天,电脑在抛出了一个错误后彻底宕机了。

这下好了,不得不直面这一问题了。好在强制重启后电脑仍能正常运行,让我有机会排查发生了什么。

硬件排查

首先联网搜索一下这个 0xc0000005 是什么问题,可以搜到是内存相关的报错,并且有一系列无头案例,无法确定问题。

随后,我决定先从硬件查起,最有可能导致错误的是SSD内存条出现了故障。不过老实说,我对自己买的东西品控还是比较放心的,最后也是理所当然的通过排查。

内存排查则是通过 windows 自带的内存诊断工具 mdsched.exe。教程提到需要选择重新启动并检查问题,重启后在 事件查看器 中查看详细报告。

此时,我的电脑已经是菠萝菠萝哒了,有点担心重启后发生更怪的事情,所以缓了一下。不过,事件查看器倒是提醒我了如何排查问题的源头。

系统日志

呼出windows事件查看器,在 windows日志 - 系统 里看一下宕机前的记录,能发现在宕机的30分钟前开始频繁地报错 等待 GraphicsPerfSvc 服务的连接超时(30000 毫秒)。,并在我最后一次 Alt + Tab 后切换到桌面的时候彻底宕机,报错 弹出应用程序: 任务切换: explorer.exe - 系统错误: Exception Processing Message 0xc0000005 - Unexpected parameters

显然,是图形相关的功能报错了,并产生了一系列连锁反应,首当其冲的嫌疑人就是显卡驱动。不过,我还留心了一下之前电脑卡住的表现,与 GCC(技嘉主板控制中心) 和 小红车 交互时都有卡顿的发生。考虑到这个问题是最近发生的,可能是它们中的某一个带来了问题。

我依次卸载了 GCC,并把 小红车、GameViewer 这些程序的开机自动启动关闭。在注意到小红车开机自启动旁边的设置管理员权限的选项时,突然灵光乍现,我之前在设置 Snipaste 的开机自启动选项时给了它管理员权限!

进到安装目录正准备卸载,顿时绷不住了,原来我把 Snipaste 装成了 x86 版本。装回正确的 x64 版本后,至今无事发生。

复盘

回头再看,这个报错实在是太合理了。我意外地错误安装了 Snipaste 的 32位 版本,而 Snipaste 提供的一些功能(例如全局监控、自动锁定不同窗口等)可能需求注册一些底层hook。

特别是我给了 Snipaste 管理员权限,导致这些 32位 的钩子深入到了不该在的地方,引发了兼容性错误,进一步导致 GraphicsPerfSvc 服务宕机。时间一长,影响了太多核或线程导致卡顿、甚至宕机;或者发生了某次致命的寻址错误,直接一击毙命。

网络上有各种形形色色的 0xc0000005 的报错反馈,希望能给到其他人一点帮助 —— 如果不是驱动、硬件问题,就要特别留心那些给了管理员权限的软件。