背景
近一年,我的电脑频繁出现蓝屏现象。蓝屏代码有很多种,PROCESS_NAME也很随机,一直没有找到原因。
现象与初期分析
通过对minidump文件用WinDbg进行分析,蓝屏代码主要有以下这些:
MEMORY_MANAGEMENT (1a)
ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY (fc)
PFN_LIST_CORRUPT (4e)
PAGE_FAULT_IN_NONPAGED_AREA (50)
IRQL_NOT_LESS_OR_EQUAL (a)
CRITICAL_PROCESS_DIED (ef)
PROCESS_NAME也不固定,列举近期发生的几次蓝屏的PROCESS_NAME如下:
csrss.exe
svchost.exe
WeixinUpdate.e
chrome.exe
YuanShen.exe
System
从蓝屏代码上看,问题大多指向内存:要么页表本身PTE/PFN问题,要么访存相关(非分页内存、执行非可执行内存、中断访问无效内存)问题。
初期尝试的解决方案
一度尝试过各种各样的解决方案。包括但不限于:
- 修复系统完整性:
DISM.exe /Online /Cleanup-image /Restorehealth&sfc /scannow - 虚拟内存调整:由于安装了多块磁盘,怀疑某块磁盘有问题,影响虚拟内存,于是更换虚拟内存所在位置
- 内存条清理:重新插拔内存条并清理金手指
- 重新安装 & 更新显卡驱动
但都不解决问题。
更新显卡驱动还有个小插曲,我台式机最早装的511.65 NVIDIA驱动。更新到581.80后,由于一些原因(下面会讲)打算卸载重装。我在控制面板卸载NVIDIA驱动程序后,重启发现显卡驱动居然还在,一看版本是560.94,十分奇怪。最后没有想到是Windows Update给我装的,这玩意居然卸载新装的驱动后能自动给我恢复到Windows Update装的版本,也是挺神奇的。



某一天的发现
昨天又一次蓝屏了,于是照常进行minidump分析,发现这次PROCESS_NAME发生在原神上。

我一开始还不觉得是原神的问题,心想就是一个普通游戏怎么还会产生蓝屏的呢。于是发到群里,WXC说“一开原神就报错就好办多了啊”,让我看下原神报错。这上哪去看原神的报错呢?而且我还是不太相信是原神导致的。于是我又试了一下,结果打开原神又蓝屏了。这下我开始相信了。
回想之前的蓝屏经历,确实很多时候都是打开原神时触发的,只是我没有把蓝屏跟原神联系在一起。
接着WXC给我发来一个米游社的帖子,里面说HoYoKProtect.sys驱动在开启了“内核模式硬件强制堆栈保护”功能的电脑上会触发蓝屏。
虽然我的CPU并不具备该功能,也就是说这个问题与我的情况无关,但是原神侵入式地在系统里安装了驱动这一发现,联系上之前我的两次严重的蓝屏问题(144 LiveKernelEvent / 1000007e BlueScreen 蓝屏问题解决 & 解决雷蛇鼠标驱动导致IRQL_NOT_LESS_OR_EQUAL蓝屏问题,尤其是前者,是完美世界反作弊程序导致的蓝屏),让我更加确信蓝屏与原神关系很大。而且.sys文件的存在,使得蓝屏也可能会在未运行原神时发生(只是有这种可能)。
检索了一下HoYoKProtect.sys相关内容,找到reddit上的两个帖子(帖子1、帖子2),看起来这一问题并不是个案。
这里我在研究过程中还发生了一件很奇怪的事情。上文提到我由于一些原因想要卸载新安装的581.80 NVIDIA显卡驱动,这是因为发生了一件事情。我在安装581.80完后,想要关闭掉系统托盘图标,关闭后,在打开米哈游启动器的一瞬间图标又回来了,并且稳定触发。我一度怀疑是NVIDIA控制面板有问题。想重启下再看看有没有问题,结果重启的过程中蓝屏了。重启后,NVIDIA控制面板中的系统托盘图标开关就再也点不动了。于是不得已才卸载驱动想要重新安装。这里面,我也不是很理解为什么NVIDIA驱动跟米哈游启动器会产生联系。
问题解决
最近一段时间没有打开米哈游启动器和原神,确实没有再发生蓝屏了。后续再持续观察一下。
我的猜测
这个问题不一定就是HoYoKProtect.sys导致的,毕竟它是有微软签名的。但是它确实很有可能跟其他驱动或程序产生冲突,例如显卡驱动,于是最终导致了蓝屏。但无论如何,肯定跟它脱不了干系。

Comments