症状 表现为突然毫无征兆的闪退,如同直接杀程序。第一次闪退不知道什么时候会触发,一旦只要触发第一次闪退后,那么后续如果重进游戏便很快触发连续闪退,哪怕什么都不做都会触发闪退。甚至游戏进度条刚加载完就触发闪退。只有重启电脑才能解决高频闪退问题。但是依然不知道什么时候会触发新一轮的第一次闪退 网上许多解决办法,要么是关QQ、改成utf-8、把无边框改成全屏,实际上,至少我这边都没有用,而且它们最后一步都有个重启电脑,重启后是有一段时间不会闪退,但最终还是会触发。 要么就是卖加速器的。这一眼都不是网络问题(如果是网络问题在游戏过程中就会感到丢包,而不是流畅的玩着毫无征兆的闪退,况且如果是网络问题也会正常程序退到初始页面,而不是跟alt+f4似的毫无征兆地程序暴毙,十个闪退解决方法八个卖加速器,把人当傻子么) 思路 猜想第一,闪退是小蓝熊的问题。很容易证实,脱机游戏一点问题都没有。但是,总归还是想联机玩对吧。 第二,网上的许多无效解决方案有一个共同点就是重启电脑,重启电脑有一个共性就是释放内存。很有可能是某种错误写入内存,被小蓝熊检测到,被误认为非法操作进而中止游戏。而这个错误不太可能是出自游戏自身,因为游戏中止后会释放自身占用内存。更可能是来自后台运行的服务或者系统,游戏虽然中止了,但有问题的那块内存还在利用着,所以第二次开游戏时候小蓝熊再次检测到那块内存,很快又闪退了。 而电脑重启后全局释放内存,所以这次能玩很久。然而治标不治本,根源问题没有解决所以过段时间还会闪退。 排查 Win + R 输入 eventvwr.msc 回车,左侧选择 Windows 日志→ 应用程序,找到闪退时间的系统日志

如图所示,这是一次典型的闪退日志,主要能看到异常0xc0000005,这个异常基本就明示是内存出错,可能是试图访问未分配、已释放、内存溢出或者受保护或非法的内存地址 从procmon监控程序捕获程序闪退时的运行

EAC正常启动并加载了 kernel.appcore.dll,然后成功创建多个线程,CreateFileMapping、Load Image、RegOpenKey 等操作全部返回 SUCCESS 但是突然短时间内大量Thread Exit线程退出 → CloseFile → Process Exit。 最终EAC本体执行了 Process Exit(进程主动退出),没有异常代码或崩溃提示,说明是主动退出而非崩溃。这说明了:小蓝熊检测到异常,主动终止自身并强杀程序。 事件查看器往下找会找到详细错误日志报告


点击“可在此处获取这些文件”下方的本地链接,找到问题日志报告的文本文档

报告比较长我就不完整放了,关键信息就这么两句: EventType=BEX64 异常代码:c0000005 故障模块:StackHash_8d09 异常偏移:PCH_BA_FROM_ntdll+0x162924 BEX64 这是个在拦截非安全代码或注入行为时的一个异常类型,比如非法写入到只读或无权内存区域、第三方DLL注入导致崩溃、程序执行了从堆栈读取来的地址,但该地址是无效的(比如栈损坏),总之表示缓冲区溢出异常,典型的内存问题,证实了之前的猜想。 c0000005 前面写了,表示缓冲区溢出、空指针解引用等 StackHash_8d09 意思是“堆栈哈希崩溃”,并且崩溃点不在特定模块,而是出现在一个经过ASLR地址随机化的地方,大多时候这种堆栈哈希错误是由外部DLL注入或栈破坏导致的 PCH_BA_FROM_ntdll+0x162924 这个标识有两个部分: PCH_BA_FROM_开头说明此地址是从预编译头文件(PCH)中恢复的代码地址,也可能是优化编译过程中转义的异常地址 ntdll.dll是Windows最底层的用户态系统库,通常程序不直接调用,崩溃发生在ntdll.dll内部,说明是调用系统 API 时触发的错误。 小蓝熊在一次崩溃后会显示错误代码,我的是Error 30005,可以在它们官网查询这个错误代码的具体含义:

可以看到,这个错误意味着:“Easy Anti-Cheat 服务无法访问关键资源,很可能是因为其他人持有它们的控制权。” 总结:游戏进程在加载后,通过小蓝熊尝试访问资源时,被系统中某个程序(或驱动)以独占/Hook 方式占用了这些资源,从而触发了非法访问(c0000005)+DEP 防护(BEX64)+ 堆栈哈希崩溃。 个人原因 结合上面的结论,最终就好摸排多了。我个人的原因是,因为我打黑夜君临是和亲友联机语音的,而我的语音服务启动了独占 WASAPI。(WASAPI有两种模式,一个共享一个独占,我开了独占)。 如果程序独占使用了AudioClient::Initialize(..., AUDCLNT_SHAREMODE_EXCLUSIVE, ...),就会让系统返回AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED 虽然黑夜君临连局内语音都没有,但是小蓝熊还是会检查,尤其WASAPI本质还是COM接口,若被锁定或 COM 线程未释放,小蓝熊认为设备被篡改,而小蓝熊作为反作弊软件,就主动结束了程序——如procmon所监控到的那样。 解决方法就是切成共享模式就行了,到现在高强度打了14个小时都没触发闪退。 虽然闪退表象许多人可能是共通的,但是原因可能每个人的系统环境和后台服务都不一样,请自行按错误日志排查问题。 因为很多人都有闪退问题,但是我其实并不觉得每个人和我闪退原因这么巧合地和我一样都是wasapi独占问题,就像有人开腾讯软件闪退,而我挂着QQ没什么问题(可能是QQ进程占用的服务不一样)。而且也有人无语音也触发了这种闪退,也有可能是其它服务独占or其它问题。 每个人的系统环境和后台服务都不一样,请按系统内的具体错误日志和procmon程序监控,具体分析来排查问题。 但是我觉得大体思路是正确的,按这个思路走大多数都能找到自己的问题所在。 更新 结论:更新bios解决需要更新最新版本的bios,我是ROG的主板,不同厂商提供的主板support不一样,自行去对应主板厂商站点下载更新bios文件更新一下bios。如果有启用bitlocker保护记得备份bitlocker恢复密钥并在操作系统挂起bitlocker加密。

完全更新完成后再关机->断电拔电源->主板上清除 CMOS->通电重启 然后进入安全模式,以管理员身份执行一次sfc /scannow,问题解决。启用WASAPI也不会闪退了。 如果还没有解决可以把内核隔离的强制堆栈保护关闭,只开启内存完整性




换一换 

































