我所经历过的最奇怪的Bug故事
2023-12-12
更新时间:2023-12-12 20:01:01 作者:知道百科
在我多年的编程生涯中,曾经经历过许多令人匪夷所思的Bug故事。然而,在其中最为离奇的故事中,出现了一种让我摸不着头脑的情况。那天,我正在热衷于编写一个网站的后端代码,一切看似进展顺利,直到我调试了几个小时才发现,无论我怎么修改代码,页面上的文字都会以一种诡异的形式显示出来。这个Bug既奇怪又令人苦恼,我开始疑惑是不是代码出了问题,还是整个宇宙发生了某种扭曲。不管怎样,这个经历一度让我感到失落,但最终我还是找到了解决方案。
Bug 千千万,文中提到的 bug,你遇见过吗?
原文链接:https://engineering.gusto.com/the-weirdest-bug-ive-seen-yet/
未经允许,禁止转载!
最近,我们收到了一份报告,说用户在使用内部软件时Chrome突然崩溃了。这导致我们正常的客户服务受到了各种干扰,他们在回复客户的电子邮件或与客户通话期间,突然就看不到工作所必需的客户账户信息了。
图:Chrome窗口崩溃
本来这并不属于我们的工作范围,通常浏览器兼容性之类的问题由其他团队负责,所以我对调试浏览器一窍不通。我应该从哪里着手呢?于是,我求助于一位经验更丰富的队友,我们的产品基础设施团队以及IT团队。
第一条线索我们首先尝试找出受影响的用户有哪些共同点。
我们很快了解到:
并非所有员工都受到了影响。
面向客户的软件似乎没有受到影响。
其他内部软件页面似乎都很正常。
这个页面并不是每次都会崩溃。遇到此问题后,用户反复尝试重新加载该页面,有时会崩溃,而有时则不会。
并非所有的内部页面都会崩溃,但其中有多个页面崩溃,包括访问最多的页面。
在Safari或Firefox中未发生此问题。
猜测一:Chrome的版本问题我们最初猜测可能是Chrome的版本问题。于是,我们让其中一个受影响的用户升级他们的Chrome版本,初步迹象看起来问题有希望得到解决。然而,我们很快了解到,尽管安装新的Chrome版本后,页面的崩溃频率降低了,但问题并没有得到根除。
此次尝试,我们获得了以下新线索:
特定Chrome版本的发布已经有一段时间了。
受影响的用户使用了不同版本的Chrome。
使用相同版本的Chrome版本,有的用户受到了影响,而有些则未受影响。
升级/降级受影响用户的Chrome版本无法解决问题。
猜测二:Chrome扩展问题也许是Chrome扩展的问题?我们尝试让其中一个用户禁用了三个核心扩展,崩溃就停止了,于是我们以为问题得到了解决。然而,当我们尝试使用访客配置文件(没有扩展)重现修复操作时,仍然看到了崩溃。我们又回到了起点。
难以重现的bug出于安全原因,我们未启用Chrome崩溃报告。
从几周前的代码库中检出代码并没有解决问题,这表明该问题不是由于最近的代码变更引起的。
加载页面的静态HTML版本并不会引发崩溃。
使用开源的Chromium代替Chrome不会引发崩溃,因此我们无法得知哪一段Chrome代码出现了问题。
引起Chrome崩溃的不仅仅是一个内部应用,还有好几个。
删除页面的特定内容并没有解决问题。
禁用内部字体并没有解决问题。
为了回避这个问题,我们的用户开始使用其他浏览器,因此这个问题的紧迫性也有所缓解。由于还有其他重要的工作,因此这个bug的调查进度缓慢。在无法重现Bug的情况下,我们没有太多的线索。然而,我们希望解决这个问题,因为用户在Chrome中设置了书签/设置/首选项。我们认为,我们不应该要求用户避免使用这款流行的浏览器,并且我们仍然会定期收到来自各种用户的询问,问我们这个Bug的调查是否有了进展。
好运降临有一天,一名工程师突然报告说她也受到了影响。她唯一的改变是下载了Grammarly桌面应用程序。
等等,真的吗?我们必须试试看能否重现这个bug。
下载Grammarly桌面应用程序。问题立即重现了!
删除Grammarly。问题没有消失。重启电脑,问题又消失了。
重新安装Grammarly。Chrome又开始崩溃了。
我们与许多受影响的用户确认,他们也在计算机上安装了Grammarly。于是,我们有了突破口!
进展由于调试能力得到了极大改善,所以我们进行了一些尝试:反复修改代码,然后重新加载页面,直到页面崩溃。
我们的主内部应用构建于ActiveAdmin之上,但新的一部分使用了React。用React构建的页面没有崩溃。这么说是我们的ActiveAdmin代码引发了崩溃?
早些时候,我们了解到删除页面上的特定内容无法解决问题,因此我们开始查看多个页面共同的代码,比如主导航栏和侧边栏。值得注意的是,我们的React页面使用了不同的导航栏。
我们的主导航栏代码涉及很多元编程,追踪这些线索常常会让人更加困惑。最终,我们弄清楚了如何注释掉导航栏的一部分,直到最后我们找到了一行代码,注释掉该行代码Chrome就不会再崩溃:
这个小节叫做“My History”,它不同于主导航的其余部分,所有用户看到的内容不一定相同,它是针对每个用户定制的,显示的是每个用户最近访问的几个页面。我们发现即使页面成功加载,将鼠标悬停在“My History”上也会导致Chrome立即崩溃。
接近真相猜测三:Turbo我们的目光停留在了turbo: true。这可能是导致问题的原因吗?Turbo是一个gem,是我们为了提高Rails应用程序的速度而添加进来的,但事实证明这并非问题所在:Turbo是在Bug报告之后才引入的,我们了解到引入Turbo的工程师在这之前的几个月就遇到过Chrome崩溃的问题,甚至在问题报告给我们之前几个月。
那么dropdown的定义在哪里呢?我们使用一款名为Arbre的框架从这种类型的方法中元编程HTML。为了浏览内部结构,我向中一位对Rails有深刻了解的工程师寻求帮助。最后获得的相关代码如下:
这段代码生成的HTML如下:
我们用生成的HTML替换dropdown的调用,然后逐步删除这些HTML,直到最后我们锁定了罪魁祸首。
真相大白当我删除loader-spinner.gif(菜单选项加载时显示的占位符)之后,页面停止崩溃。真相揭晓!就是这个gif!我们替换成了另一个gif,页面没有崩溃。
我们下载了这个图片文件,将其拖入浏览器窗口。伴随着莎士比亚式的戏剧化,页面当即崩溃了。我和同伴都倒吸了一口气。
我们还发现:
在Safari中打开该文件不会导致崩溃。
卸载Grammarly并重启计算机后,在Chrome中加载该文件不会崩溃。
于是,我们通知了设计系统团队这个非常奇怪的现象,这个导致Chrome崩溃的gif,他们迅速换了一个新的文件。
为什么在安装了Grammarly的情况下,这个特定的gif会导致Chrome崩溃?不幸的是,由于无法访问Chrome和Grammarly的源代码,所以我们只能猜测。在我们替换了这个gif之后,Grammarly或Chrome(或二者共同)都解决了这个问题,因为原来的gif也不会再导致Chrome崩溃了。
结束语我永远都想不到调试的尽头有一个gif在等着我。
尽管我们找到了解决方法,但在这期间内,这个bug的优先级也发生了变化,但最终我们的好奇心战胜了一切。虽然无法靠个人的力量独自解决这个bug,但我们通过坚持不懈的努力和共同协作,最终解决了这个问题。
CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。
一分钟速览新闻点!
华为余承东回应“遥遥领先”被调侃:只有领先比较多时才说
小米重回国产手机品牌市场份额第一,雷军:小米加油
周鸿祎称大家对 AI 充满不切实际的膜拜,甚至有人找他做养猪大模型
微信视频号电商 GMV 超千亿,微信支付团队将参与建设
余承东发文回应懂车帝测试:坑人的测试
谷歌母公司 Alphabet 在与 Epic Games 的反垄断诉讼中败诉
苹果发布 iOS 17.2 正式版,带来新的「手记」APP
消息称苹果 Vision Pro 上市在即,已着手培训零售店员工
Arm 首席执行官“夜不能寐”:担心人类会失去对人工智能的控制
传联发科已经拿下苹果等大厂的 WiFi 7 芯片大单
8 天 4 个国家!黄仁勋密集亚洲之行透露出哪些信号
Linux Mint 21.3 Beta 发布,实验性支持 Wayland
《Doom》发布 30 周年
国内要闻
华为余承东回应“遥遥领先”被调侃:只有领先比较多时才说
日前,余承东在华为花粉年会上回应被网友调侃的“遥遥领先”,称自己一场发布会有时最多有一个遥遥领先,甚至有时一个都没有,只有在这个领域领先比较多的时候才会说。余承东还表示,想要做到“遥遥领先”非常不容易,每一个领先的背后都是研发创新、技术投入和不断努力的结果。(成都商报红星新闻)
小米重回国产手机品牌市场份额第一,雷军:小米加油
据 BCI 最新数据显示,11 月中国手机市场,小米以 18.3% 站上国产品牌第一、总排名第二,苹果以 21.1% 的份额排名第一。具体来看,iPhone 当月激活量 604.4 万台,同比增速 2.2%,同比激活量增长 13 万台,小米手机当月激活量为 524.3 万台,同比增速 44.1%,同比激活量增长 160.5 万台。对此,小米集团合伙人卢伟冰表示:“离苹果还有差距,继续努力”,随后,小米 CEO 雷军转发并评论:“小米加油!”(快科技)
周鸿祎称大家对 AI 充满不切实际的膜拜,甚至有人找他做养猪大模型
在 2023 中国企业领袖年会上,360 创始人周鸿祎对于最近的 AI 大模型热潮发表了看法。他表示,(感觉)大家对大模型充满了一种无限的向往或者不切实际的膜拜,之前还有人找他做养猪大模型。他认为,大模型的技术路线突破才短短几年,目前还存在着很多缺点。他希望大家对大模型有一个正确的认知,不要高估现在大模型的能力,不要低估大模型未来发展的潜力,虽然它现在已经可以跟实体产业相结合,但它还不能完全接管此类业务,应该扬长避短发挥它的长处,因为很多短板还有待解决。(凤凰网科技)
微信视频号电商 GMV 超千亿,微信支付团队将参与建设
据《晚点 LatePost》报道,微信视频号电商今年的成交总额(GMV)在一千亿元左右。同时,腾讯还将进一步扩大视频号电商业务的队伍:除了负责前端产品的视频号直播团队外,微信支付团队也将加入视频号电商的建设,参与各行业类目、达人、客户的拓展与运营,以及交易产品等基础功能的搭建。视频号的日活跃用户数在 2022 年三季度超越快手后,商业化也被提上了日程。去年 7 月,视频号分别上线了视频号小店和原生的信息流广告。知情人士透露,视频号的商业化在今年也已被腾讯确定为最重要的集团战略之一。
余承东发文回应懂车帝测试:坑人的测试
针对懂车帝对问界 M7 严寒续航测试成绩垫底,华为智能汽车解决方案 BU 董事长余承东发文称“坑人的测试!科学与严谨才是应该遵循的基本规则!”
近日,懂车帝测试严寒情况下的混动车型纯电续航达成率,约 20 个车型参加测试。其中比亚迪仰望第一,85.08% 的续航达成率;问界 M7 增程版倒数第一,只有 31.6%。针对此测试,余承东和 AITO 汽车均发文进行回应。(新浪科技)
国际要闻
谷歌母公司 Alphabet 在与 Epic Games 的反垄断诉讼中败诉
Alphabet 输掉与《堡垒之夜》开发者 Epic Games 之间的反垄断官司,此前 Epic Games 起诉谷歌应用商店违反反垄断法。(财联社)
苹果发布 iOS 17.2 正式版,带来新的「手记」APP
苹果今日发布了 iOS 17.2,本次更新带来了新的「手记」APP,同时增强了操作按钮和「相机」。「手记」APP 于 6 月在 WWDC 活动上发布,该应用程序旨在让用户记录生活中的关键时刻。「手记」APP 包括手记建议、预定通知以及用于添加照片、位置等的选项。对于 iPhone 15 Pro 系列两款机型,iOS 17.2 为操作按钮添加了翻译选项,可快速翻译短语或与讲其他语言的人对话。还支持录制空间视频,并可在苹果即将推出的 Vision Pro 头显中查看。值得注意的是,同步更新的 watchOS 10.2,恢复了在手表屏幕上滑动来更改表盘的功能,苹果在 watchOS 10 首次亮相时删除了这一功能。
消息称苹果 Vision Pro 上市在即,已着手培训零售店员工
据彭博社记者马克·古尔曼报道,苹果零售店已经开始为 Vision Pro 做准备,这意味着这款产品即将发售。苹果之前只告诉员工们这一培训将会在 2024 年初进行,大约与 Vision Pro 发售的时机接近。根据古尔曼的说法,现在这些研讨会已经开始安排下去,具体的培训活动将于明年 1 月中旬开始,每位员工需要接受为期两天的培训。()
Arm 首席执行官“夜不能寐”:担心人类会失去对人工智能的控制
软银旗下芯片设计公司 Arm 的首席执行官 Rene Haas 在近期接受采访时表示,他担心人类可能会失去对人工智能的控制。他表示,人们必须要有一些控制、预留后门以及关闭它的方法。(财联社)
传联发科已经拿下苹果等大厂的 WiFi 7 芯片大单
据媒体报道,联发科已经拿下全球平板龙头美系品牌、英特尔笔记本电脑平台、各大手机厂 WiFi 7 大单,成功打破了博通长期垄断 WiFi 芯片市场的局面。消息显示,联发科 WiFi 7 芯片将会采用台积电 6nm 制程量产,预期明年上半年将开始拉高投片动能。(芯智讯)
8 天 4 个国家!黄仁勋密集亚洲之行透露出哪些信号
英伟达 CEO 黄仁勋的亚洲之行已经有了丰厚的收获,先后公布了在日本、新加坡、马来西亚和越南四国的合作或投资计划,表现出这家人工智能芯片巨头对于亚洲市场的重视。此外,英伟达和亚洲各国的本地厂商展开合作,或许也是为了应对美国政府新的芯片出口限制政策。(澎湃新闻)
程序员专区
Linux Mint 21.3 Beta 发布,实验性支持 Wayland基于 Ubuntu 的桌面发行版 Linux Mint 释出了 21.3 Beta,它的默认桌面环境 Cinnamon 释出了 6.0 版本,加入了对 Wayland 显示服务器的实验性支持。Wayland 已有 15 年历史,旨在取代 X Window 系统,它已被流行桌面环境支持。Cinnamon 6.0 默认仍然是 Xorg。其他更新包括:75% 缩放支持,改进手势,改进应用 Hypnotix TV,等等。Linux Mint 21.3 代号为 Virginia,将是一个长期支持版本,一直支持到 2027 年。详情可查看:https://blog.linuxmint.com/?p=4611(Solidot)《Doom》发布 30 周年
id Software 于 1993 年 12 月 10 日发布了具有里程碑意义的游戏《Doom》。游戏在多个领域开创先河并获得广泛认同,它使用了包围游戏角色的 3D 环境绘图、多人游戏支持,并且能让玩家自由创建扩展游戏内容的 WAD 架构。由于它对游戏工业的冲击之大,在 1990 年代中期以后激增的 FPS 游戏,通常被称为“类DOOM(Doom-like)”游戏。为庆祝《Doom》30 周年,id Software 联合创始人约翰·卡马克(John Carmack)和约翰·罗梅洛(John Romero)再次团聚,通过 Twitch 和 Craddock 讨论了《Doom》。
以上就是我所经历过的最奇怪的Bug故事的相关介绍,希望能对你有帮助,如果您还没有找到满意的解决方式,可以往下看看相关文章,有很多我所经历过的最奇怪的Bug故事相关的拓展,希望能够找到您想要的答案。