前言

  • 最近,我们部门负责项目运维的小王频频接到甲方的反馈,运行的项目使用谷歌浏览器登录后,每次点击处理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

      - 重启谷歌浏览器
  • 使用命令禁用渲染器代码完整性保护功能:

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

      shell   chrome.exe --disable-features=RendererCodeIntegrity  

总结

Windows检查事件日志

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

Google Chrome显示模块加载列表

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

一点思考

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

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

  1. 印象最深的一个bug:sessionStorage缓存在移动端失效

    无bug,不程序:作为程序员的我,不是修bug就是在写bug的路上. 移动端sessionStorage缓存失效是我"印象最深的一个bug"之一,为啥呢,因为这个问题导致我加班到很 ...

  2. 趣图:快下班了,剩一个bug,修复一下再走

      趣图:当我给老板展示我修复了那个 bug 时 趣图:当我以为这是最后一个Bug时……

  3. SpriteKit游戏Delve随机生成地牢地图一个Bug的修复

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) Delve是一个很有意思的地牢探险类型的游戏,其中每一关的地图 ...

  4. yarn client中的一个BUG的修复

    org.apache.spark.deploy.yarn.Client.scala中的monitorApplication方法: /** * Report the state of an applic ...

  5. 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型

    mingus在输出midi文件的时候,使用这样的函数: from mingus.containers import NoteContainer from mingus.midi import midi ...

  6. iOS10相册相机闪退bug

    iOS10系统下调用系统相册.相机功能,遇到闪退的情况,描述如下: This app has crashed because it attempted to access privacy-sensit ...

  7. tlplayer for ios V1.1.2加密测试版本(修复1.1.1版本 for ios7播放闪退问题)

    此版本主要修复了ios7播放列表导致的程序闪退问题,方便大家测试加密与非加密视频. 此为tlplayer for ios版本,可以播放加密视频与非加密视频. 加密视频下载地址:http://blog. ...

  8. 测试工程师面试题之:给你印象最深的Bug

    有人看到别人在侵淫面试技巧,什么<程序员面试宝典>,或者<面试测试工程师须知>等等,就会嗤之以鼻.他会觉得这不是“投机取巧”吗,最重要的还是踏实提高自己的能力. 非常同意这种看 ...

  9. 从修复 testerhome(rubychina)网站的一个 bug 学习 ruby&rails on ruby

    前言 testerhome: http://testerhome.com/topics/1480 对于一个差点脱离前沿技术人,想要学习ruby,就意味着要放弃熟悉的操作系统windows,熟悉的ide ...

随机推荐

  1. 关于php的ini文件相关操作函数浅析

    在小公司,特别是创业型公司,整个服务器的搭建一般也是我们 PHP 开发工程师的职责之一.其中,最主要的一项就是要配置好服务器的 php.ini 文件.一些参数会对服务器的性能产生深远的影响,而且也有些 ...

  2. vue中data为什么不写成data:{}这样而是写成data(){return {}}类型。

    data:{}:这样会直接挂载在vue实例中,变成全局变量,容易造成污染,再次今日该组件页面,会保留上次的变量值,不会被初始化 data(){return {}} :return包裹后数据中变量只在当 ...

  3. javascript 对象池

    * 一个对象池的简单应用 tool tip tootip.html <html> <head> <meta charset="UTF-8"> & ...

  4. mysql where in 数组解决小tips

    由于sql语法要求,不可在in后面直接连数组,若数组形式下,则需要转换成逗号隔开的字符串 <?php$arr = array(1,2,3,4,5);$arr_string= join(',', ...

  5. 关于selenium添加使用代理ip

    最近在爬某个网站,发现这个网站的反爬太厉害了,正常时候的访问有时候都会给你弹出来验证,验证你是不是蜘蛛,而且requests发的请求携带了请求头信息,cookie信息,代理ip,也能识别是爬虫,他应该 ...

  6. 牛客挑战赛48E-速度即转发【带修莫队,分块】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11161/E 题目大意 给出\(n\)个数字的一个序列,\(m\)个操作. 给出\(l,r,k\),求一个最大 ...

  7. ES5新增方法--查找方法--forEach(),filter(),some()区别

    1.forEach方法 迭代(遍历)数组 var arr = [1, 2, 3]; var sum = 0; arr.forEach(function (value, index, array) { ...

  8. 迁移appseting.json创建自定义配置中心

    创建一个自定义的配置中心,将框架中各类配置,迁移至数据库,支持切换数据库,热重载. 说在前面的话 自使用.net Core框架以来,配置大多存在json文件中: [框架默认加载配置]文件为appset ...

  9. The type name or alias SqlServer could not be resolved.Please check your configuration

    The type name or alias SqlServer could not be resolved.Please check your configuration file.... 检查一下 ...

  10. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...