谷歌浏览器问题事件BEX引起的闪退崩溃异常的修复与思考

网友投稿 1321 2022-05-29

前言

最近,我们部门负责项目运维的小王频频接到甲方的反馈,运行的项目使用谷歌浏览器登录后,每次点击处理2秒后,浏览器自动闪退崩溃.小王同学折腾了一个星期,还没找到问题的原因.甲方客户都把问题反馈给项目经理了.项目经理给小王撂下狠话,“明天客户再给我打电话,你以后再也没机会穿拖鞋上班了…”

小王扰了扰头上剩在中间的头发,一脸委屈的看向我,无奈中透着一点深情

“Chova大哥哥,你来帮我看看嘛~以后晚上陪你一起健身!”

看着他期待的目光,我心目不免一紧,哆哆嗦嗦地打开了他电脑上的谷歌浏览器…

问题一:问题事件BEX浏览器停止工作

点击项目中问题处置页面跳转后,光标出现转圈 ,2秒后弹框提示Google Chrome已停止工作

原因

软件中dll文件和浏览器发生冲突

解决

删除造成冲突的dll文件

点击查看问题详细信息,查看浏览器崩溃的问题签名

问题签名: 问题事件名称: BEX 应用程序名: chrome.exe 应用程序版本: 69.0.3497.100 应用程序时间戳: 5b9cbd4f 故障模块名称: BrowserUrl.dll 故障模块版本: 0.0.0.0 故障模块时间戳: 5f4b9830 异常偏移: 00004138 异常代码: c0000409 异常数据: 00000000 OS 版本: 6.1.7601.2.1.0.256.48 区域设置 ID: 2052 其他信息 1: 031a 其他信息 2: 031ac9a5aca2c7bab1c2347d68169e05 其他信息 3: e951 其他信息 4: e951aede12191034f862a087b85a801a

问题签名中的故障模块名称就是造成浏览器崩溃的dll文件

通过在浏览器导航栏中输入以下路径查看加载的dll文件位置:

chrome://conflicts/

将原来的dll备份到其余文件夹,用于后续恢复

在软件文件夹中删除软件中造成冲突的dll文件

修复造成冲突的软件

删除造成冲突的dll文件只是暂时解决浏览器停止工作的问题

因为dll文件时软件的运行依赖,如果随便删除会导致软件本身运行异常

如果想要彻底解决BEX问题事件,需要修复造成冲突的软件,大部分是软件本身存在问题,建议下载官方软件

问题二:谷歌浏览器闪退

点击项目中问题处置页面跳转后,光标出现转圈 ,2秒后浏览器闪退消失

项目部署在同一个服务器上,使用不同的计算机进行测试,问题只是在部分计算机中出现

原因

由于问题仅在部分电脑上出现,初步判定不是项目的问题,从系统方向排查问题

对无问题计算机和问题计算机,初步判定为问题计算机中的安全策略配置导致浏览器访问发生闪退崩溃的问题

解决

删除安全策略

进入控制面板点击用户账户查看当前用户为是否为管理员账户

进入C盘修改策略文件弹出框提示需要管理员权限

打开运行输入gpedit.msc打开本地策略组

进入到本地策略组中的用户账户控制以管理员批准模式控制其余账户

禁用用户账户控制, 重启计算机

开机后进入C盘直接删除操作文件

增加用户权限

在系统中的账户中查看当前用户账户

点击此电脑,选择属性中的安全选项卡,选中高级

更改当前用户账户为所有者并替换子容器和对象的所有者

在权限中添加当前用户账户的完全控制权限并继承

问题三:错误码STATUS_INVALID_IMAGE_HASH浏览器崩溃

谷歌浏览器崩溃,错误码为STATUS_INVALID_IMAGE_HASH

谷歌浏览器插件报错,并弹出错误提示框

原因

Google Chrome在79版本中重新启用了渲染器代码完整性保护Renderer Code Integrity Protection. 这个会导致签名不是谷歌或者微软的模块被阻止加载

解决

禁用渲染器代码完整性保护功能

通过文件禁用渲染器代码完整性保护功能 (推荐) :

- 打开运行输入regedit进入注册表编辑器

- 进入文件夹 HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome 中

- 在右侧的窗口中,右键单击新建, 选择DWORD(32位)值创建新的密钥

- 双击新建的密钥,将值名称修改为RendererCodeIntegrityEnabled, 并将值数据输入为0

- 重启谷歌浏览器

使用命令禁用渲染器代码完整性保护功能:

- 打开运行,输入以下命令可以禁用渲染器代码完整性保护功能,其余功能禁用方式类似

shell   chrome.exe --disable-features=RendererCodeIntegrity

总结

Windows检查事件日志

右键开始图标,打开事件查看器

点击应用程序和服务, 进入Microsoft => Windows => CodeIntegrity => 可操作

查找问题事件ID为3033的事件

点击问题事件的详细信息,会显示导致浏览器崩溃的dll文件的名称和位置

Google Chrome显示模块加载列表

谷歌浏览器问题事件BEX引起的闪退崩溃异常的修复与思考

在导航栏输入以下路径,可以显示加载的各个模块的信息:

chrome://conflicts/

一点思考

这个BUG是我目前修复的千千万万个项目的BUG中印象最深的一次BUG,由于问题事件BEX引发的谷歌浏览器闪退崩溃的异常问题.这个BUG因为其不可复现性导致特别难以发现和解决,正是由于这一次的BUG解决过程,让我了解到了一位攻城狮在项目开发维护过程中实际经验的重要性,多思考,多实践,多多积累经验,才是一位攻城狮的成长之路.

交互 控制台 渲染 运维

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:10个python爬虫入门实例(小结)
下一篇:Linux系统编程-进程概念、进程管理、信号处理
相关文章