如何让Google开发工程师帮你改Bug

前言

本篇文章记录了一次去年年底与谷歌工程师交流的过程,希望可以为大家提供一种新的解决问题思路。

背景

去年的11月26日,还记得那是个星期四。刚刚改完手头的bug的我正准备刷一下沸点,没想到就在这时企业微信就闪了起来,把鼠标移过去,瞬间后背一凉,居然还是”线上问题反馈群”弹的消息,每次这个群一弹消息,都会让我有一种不祥的预感。
image.png
我颤抖的用右手点开了这条消息:
image.png

很多老师反馈试卷、教案、加题面板中部分公式符号无法显示完整,导致这些公式符号在打印出来后也会丢失。严重影响到了老师们的使用,随着其他多个业务线及部门的反馈,按照该趋势可能演变成信息系统事故。

图片[2]-如何让Google开发工程师帮你改Bug-一一网

分析原因

由于测试人员的电脑上装有chrome浏览器的多个版本,经过测试同事的分析,首先发现在Chrome86及以下版本都不会出现该问题。而在一周前刚刚发布的Chrome87版本的浏览器上可以百分百复现。

Chrome87?为什么听着这么耳熟?我好像回忆起了些什么,突然点开了我们的【晓前端团队】公众号:看到我上周刚刚编辑的”晓前端周刊 第49期”的标题上赫然写着几个大字:“Chrome87发布,获多年来最大性能提升!”

image.png

后边又对比了其他浏览器以及版本的显示情况,基本可以确定是由于Chrome87版本升级带来的问题。
“沃日,我辛苦把你写到我们周刊头条,你居然坑我!”
图片[3]-如何让Google开发工程师帮你改Bug-一一网

解决过程

虽然这种浏览器升级引发的问题很让我头疼,可脑海中突然浮现出公司成就呵护,拼搏创新,团队分享的核心价值观,瞬间鼓舞了我,我必须想办法把它搞定!

先简单描述一下问题,我们平台的公式符号全部都用的SVG,下图的(-2,-3)是一张公式的SVG,可以看出其中的负号”-“并没有显示出来。
image.png
尝试将Chrome浏览器放大到某种比例,公式符号就可以正常显示。下图放大至110%可以正常显示。
image.png
针对以上情况,考虑出以下几种方案

方案一

  • 做法:尝试使用css的transform和zoom属性尝试将所有公式类的SVG图片放大至一定比例,让其可以正常显示,虽然这样会造成一些排版的问题,但是可以暂时性解决符号丢失。
  • 弊端:然而发现公式在不同地方的显示比例并不统一,没法确认具体的放大倍数,如在A页面zoom值调整至1.04可以正常显示,但是在B页面需要调整至1.06才可以正常显示,若统一调整至1.06,则可能其他位置又不能正常显示。(放大倍数只能限制在一定范围内,并不是超出一个值就可以统一显示出来)。
    如果所有地方进行分别改动,开发成本较高,测试人员回归压力也较大。

方案二

  • 做法:整理说明文档引导老师进行浏览器降级;
  • 弊端:操作过于复杂,需要让所有用户先卸载当前Chrome并安装我们提供的低版本安装包,且需要考虑做禁止Chrome自动升级的系统配置。

方案三

  • 做法:使用其他浏览器,如360或chrome内核低于87版本的浏览器;
  • 弊端:项目一直只兼容Chrome浏览器,临时使用其他浏览器可能会造成更大风险,且用户量较多,也不确定这种方案的稳定性;

最终方案

对比上述方案,发现还是方案一可行性强一些,正当我心里默喊公司的企业愿景:”要成为受人尊敬的百年育人集团”,并准备为了实现它而贡献出自己的一个不眠之夜之时……

我突然灵机一动,既然升级导致我们的SVG显示异常,那其他人一定也出现过类似的问题,于是就尝试着去谷歌的Monorail问题跟踪平台的Chromium项目(bugs.chromium.org/p/chromium/…)搜了一下关键字”SVG”。

好家伙 ,不看不知道 一看吓一跳,仅在近一周内提的就有上百个关于SVG的issue。
图片[6]-如何让Google开发工程师帮你改Bug-一一网
大概看了一下其他人的bug,大多和我们的情况并不完全一致,于是我抱着试试的心态自己提了一个issue,说明清楚我们的情况并描述了浏览器版本等信息。很快得到了谷歌项目人员的回复。
image.png
一位Chromium项目成员问我是不是开了”硬件加速”模式,关闭后这个问题是否会解决?我去设置里面搜了一下
image.png
果然开启了这个配置,我按照他的建议关闭了这个配置并重启浏览器后,的确可以正常显示了。于是我马上回复并感谢了他。
image.png

原来是升级87以后,浏览器会自动开启这个配置项,而原来的低版本这个配置是默认关闭的。
其实硬件加速模式大概就是将一部分工作交给显卡来完成,以减轻cpu工作量,而这处理的过程中可能产生了问题而导致了这个bug。

到这里,我们马上联系信息管理部同事整理了一篇教用户手动去关闭硬件加速模式的文档并发布了通知,至此,这个问题从发现到得到暂时性解决,只用了半天的时间。

后续进展

这时的我终于松了一口气,但是这个问题并没有完全解决:由于我们有很多在线考试的场景,公式看不到会很影响我们学生的答题情况,虽然手动配置可以暂时解决,但是这种方式还是不太友好。

于是 在我们老大的建议下我又和谷歌人员说明了我们的用户数量很庞大,并且其他浏览器都不会有这种问题(这点很关键),且需要用户手动关闭这个配置项很不友好等现象后,谷歌人员向我们承诺在88稳定版会修复它。image.png
而他们也做到了承诺,在不到一个月后发布的Chrome88稳定版本里面解决了这个问题。
这里是issue地址,大家感兴趣的可以看一下。

总结

试想如果没有去向他们寻求帮助的话,我们从评估方案,到整理修改范围,再到开发,测试,发版;这一系列流程下来,可能一天的时间远远不够,而且会伴随着改漏或者产生其他显示问题的风险。

浏览器升级引发问题其实是蛮常见的一种现象,希望可以大家以后遇到类似的问题也可以尝试向官方的一些开发人员反馈,在交流过程中你可能会有意想不到的收获(有时也许你的bug交给别人来改会更稳定)。

给谷歌提bug的地方:Monorail问题跟踪平台:bugs.chromium.org/

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享