印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常

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

前言

  • 最近,我们部门负责项目运维的小王频频接到甲方的反馈,运行的项目使用谷歌浏览器登录后,每次点击处理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 Chrome79版本中重新启用了渲染器代码完整性保护Renderer Code Integrity Protection. 这个会导致签名不是谷歌或者微软的模块被阻止加载

解决

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

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

    • 打开运行输入regedit进入注册表编辑器
    • 进入文件夹 HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome
    • 在右侧的窗口中,右键单击新建, 选择DWORD(32位)值创建新的密钥
    • 双击新建的密钥,将值名称修改为RendererCodeIntegrityEnabled, 并将值数据输入为0
    • 重启谷歌浏览器
  • 使用命令禁用渲染器代码完整性保护功能:

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

总结

Windows检查事件日志

  • 右键开始图标,打开事件查看器
  • 点击应用程序和服务, 进入Microsoft => Windows => CodeIntegrity => 可操作
  • 查找问题事件ID为3033的事件
  • 点击问题事件的详细信息,会显示导致浏览器崩溃的dll文件的名称和位置

Google Chrome显示模块加载列表

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

在这里插入图片描述

相关文章
|
3月前
|
Linux iOS开发 MacOS
谷歌浏览器中的谷歌翻译失效了?如何解决谷歌翻译不响应问题?
本文分析了谷歌翻译在谷歌浏览器中失效的原因,并提供了针对Mac OS、Windows和Linux系统的解决方案,包括下载和执行特定软件以修复翻译服务不响应的问题。
305 0
谷歌浏览器中的谷歌翻译失效了?如何解决谷歌翻译不响应问题?
|
3月前
|
存储 缓存 前端开发
前端谷歌浏览器面版属性
【8月更文挑战第19天】前端谷歌浏览器面版属性
41 0
|
1月前
|
Web App开发 安全 中间件
谷歌、火狐、Edge等浏览器如何使用ActiveX控件
allWebPlugin 是一款为用户提供安全、可靠且便捷的浏览器插件服务的中间件产品,支持 Chrome、Firefox、Edge 和 360 等浏览器。其 V2.0.0.20 版本支持一个页面加载多个插件,并解决了插件与浏览器之间的焦点问题。用户可通过“信息化系统 + allWebPlugin + 插件 + 浏览器”的解决方案实现 ActiveX 插件的无缝集成。下载地址见文末,安装包含详细说明。
|
18天前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
45 0
|
3月前
|
Web App开发
Chrome——谷歌浏览器chrome如何模拟其他客户端
Chrome——谷歌浏览器chrome如何模拟其他客户端
99 1
Chrome——谷歌浏览器chrome如何模拟其他客户端
|
3月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
92 1
|
3月前
|
JavaScript API
VUE——监听浏览器关闭及标签页关闭事件
VUE——监听浏览器关闭及标签页关闭事件
318 0
|
4月前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
1天前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
29天前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
307 1