主要观点:在 Google Docs 团队时,遇到一个新的致命错误,仅在特定 Chrome 版本出现,通过各种尝试找到是 V8 优化重构导致Math.abs()
在超级优化级别变为恒等函数,从而使Math.abs()
对负数输入返回负值引发崩溃,最后添加临时浏览器检查和长注释解决问题,虽历经 2 天但问题已在 V8 中修复。
关键信息:每周进行 bug 分诊,此错误是新的 top 错误,堆栈跟踪信息少,用户投诉不明显,在开发环境中尝试重现,通过各种编辑操作找到触发点,发现是大量文本加粗和取消加粗导致,崩溃原因是视图中的簿记错误,当时 Docs 有特殊布局引擎和缓存机制,调试过程艰难,包括二进制搜索等方法,最终找到罪魁祸首是特定簿记代码块中Math.abs()
的问题,V8 团队指出已存在的 bug 并解决。
重要细节:包括内部用户日志查找无果,各种编辑尝试如添加奇特内容等,脚本操作文档发现约 20 次循环时崩溃,后续通过断点调试、添加日志语句等逐步排查,涉及到字体宽度、缓存等因素,还请教了同事和技术领导,最终找到 V8 相关问题及解决办法,多年后 Docs 切换为画布渲染等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。