23 岁博士生修复 Firefox 中的 22 年“幽灵老 Bug”


2002 年 6 月 2 日,Firefox 用户报告了一个 bug:当鼠标悬浮在工具栏图标上时会展示相关提示(该项特性名为 'Tooltips')。如果此时将浏览器从前台切换到后台,该提示会仍然留在前台——就像幽灵一样。而摆脱这一恼人提示的唯一方法是再次将浏览器从后台切换到前台,然后将鼠标从工具栏上移开。

该 bug 的具体复现如下图所示:

22 年后 Mozilla 终于为 Firefox 修复了该 bug,对应的 Bugzilla 报告也终于关闭了。

根据科技媒体 arstechnica 的报道,帮助修复该 bug 的是斯坦福大学的一年级电机工程博士生 Yifan Zhu,这也是他第一次向开源项目贡献补丁。

▲ https://fanzhuyifan.github.io/

Zhu 出生于 1999 年,也就是该 bug 首次报告三年之前。他是在 Linux 上使用邮件客户端 Thunderbird 时首次遭遇该 bug,认为这个 bug 太恼人了。他试着报告该 bug,结果发现它已经存在了 22 年之久,至今还没有修复,可能是因为它是一个小问题也不会导致崩溃处理的优先度不高。

毕竟这个 bug 仅仅影响到非常小区域的 UI,用户顺手就能临时处理,而且有很多其他比它更严重的 bug 在排队等待解决,所以这个 bug 就这样变为了“陈年老 Bug”。

于是他决定自己来修复。他知道如何编程,也正好处于博士生开始前的暑假,但此前从未向开源项目贡献代码,也从未在 Firefox 之类的复杂项目上工作过

虽然冲劲十足,但 Zhu 刚开始的修 bug 之路算不上顺利。他先是在整个代码库里搜索 'tooltip',然后检查可能存在错误的候选内容,并插入调试打印语句跟踪执行。这样的工作非常耗费时间。

不过正是通过这样的“笨方法”,Zhu 最后定位到了问题所在。当鼠标悬浮在某个元素上时,一个计时器会启动去显示 tooltip,在鼠标移出事件后计时器将会取消。但使用快捷键切换窗口或虚拟桌面时,Firefox 没有取消计时器。Zhu 递交了补丁,让 tooltip 的显示基于 Firefox 失去焦点而不是鼠标离开应用

几个小时后,Zhu 收到 Mozilla 资深软件工程师 Emilio Cobos Álvarez 的回复,他帮助完善了 Zhu 的补丁并提交到代码库中,并表示 Zhu 的第一个 Firefox 补丁令人印象深刻。


相關推薦

2022-11-01

thleen 和 Andrew 结婚,同年她又从伦敦大学获得了应用数学博士学位。为了为他们的工作争取更多资金,Boot 夫妇再次前往洛克菲勒基金会寻求资助,该基金会提出的的条件则是让 APE(​​C)X 可以与人类语言以及数学一起工作。结

2022-09-06

员和活动家,2012 年在墨尔本大学获得计算机科学和法律博士学位。2006 年到 2018 年期间在电子前沿基金会 (Electronic Frontier Foundation,EFF) 工作,包括担任首席计算机科学家和人工智能政策负责人。 2018 年,他离开了 EFF,成为 AI

2023-05-30

管理者 Andy Tanenbaum 是 Vrije 大学的教授,在职期间和一个博士生团队维护了 MINIX 3 很长时间。但 Andy 于 2014 年从 Vrije 大学退休,没有了大学的资金和人力支持,MINIX 的开发在 2014 年之后的几年里逐渐停滞。 而今年的 Andy Tanen

2023-02-12

由 Mozilla 所开发的,毫无意外 Thunderbird 的基础架构就是 Firefox 浏览器。以 Firefox 为基础带来了诸如跨平台支持、Gecko 网络渲染器、Spidermonkey JavaScript 编译器等好处。除此之外,Thunderbird 还可以继承 Firefox 更新所带来的新特性、

2023-03-28

已更新到最新版本,比如 : LibreOffice 7.5.1 办公套件 Firefox 111 和 Chromium 110 网络浏览器 Krita 5.1.5、digiKam 7.9 和 GIMP 2.10.34 图像编辑器 Calligra Suite 3.2.1、SMPlayer 22.7.0 和 VLC 3.0.18 视频播放器 VirtualBox 7.0.6  可以从官网下

2023-01-08

ike):一种帮助用户配置桌面的工具。 存储库中还提供:Firefox 108.0、Thunderbird 102.6 Virtualbox 7.0.4、OBS Studio 28.1.2、GIMP 2.10.32、Calligra Suite 3.2.1、FFMPEG 5.1.2;Zypper 和 dnf5 作为替代包管理器、PHP 8.2.0、众多游戏、工具、开发工具、教

2023-06-16

前 Ubuntu 最新的操作系统,它将持续获得安全更新和错误修复直至 2024 年 1 月。 与 Ubuntu 22.10 相比,Ubuntu 23.04 版本配备了更新的 Linux 内核、获得了更好的硬件支持、全新的 GNOME 桌面环境、更新了 zstd 压缩代码、BPF 改进、默认

2022-11-20

士学位。1956 年在哈佛大学获得应用数学(计算机科学)博士学位,师从 Howard Aiken (美国物理学家和计算领域的先驱,IBM Harvard Mark I 计算机背后的原始概念设计者)。 Brooks 于 1956 年加入 IBM,参与了 IBM 7030 Stretch 架构设

2022-11-01

Firefox 106.0.3 发布了,这个版本仅与 Windows 用户相关,解决了 Windows 平台上的两个问题。 第一个修复解决了某些 Windows 用户的启动崩溃问题,Bug 1797464 显示: Firefox 在受影响的机器上抛出了访问冲突异常。 第二个修复解决了 Win

2023-11-03

,Windows 11 23H2 将获得两年的支持,每月提供累积更新、修复和新功能。需要提醒的是,Windows 11 21H2 生命周期已经在本月早些时候结束。至于 22H2,微软将在一年后,即 2024 年 10 月 4 日停止支持。 以下是 Windows 11 23H2 的其他更

2023-01-06

件: KDE Plasma 5.26.4、KDE Frameworks 5.101.0、KDE Gear 22.12.0 Firefox 浏览器 108.0.1 MESA 更新到了 23.0 默认添加了 PipeWire 和 Wayland 已经默认启用了 Flathub 添加了 Samba 使用 overlayroot 将根目录的状态设置为不可变 更新了 Calamares

2023-01-13

tu 每个大版本都会给出一套特制的桌面壁纸,一般以代号中的动物为创作灵感,比如  Ubuntu 22.10 代号 “Kinetic Kudu - 活力满满的羚羊”,其官方默认壁纸是这样的: 除了官方壁纸,每个版本还会举办“壁纸大赛”,

2022-06-02

嵌”到嵌入式设备中。WPE 本身并不是像 Safari、Chrome 或 Firefox 等此类产品形态的 Web 浏览器,而是包含用于加载、解析和渲染网站的底层构建模块(了解 Web 浏览器和 Web 浏览器引擎之间的区别)。 WPE WebKit 由总部位于西班牙的

2023-09-22

数据技术都能四世同堂,凭什么开发 30 岁就要被干掉? 上月正式发布的 Go 1.21 修改了 for 循环变量的语义(预览阶段,点此查看详情)。 现在,Go 团队表示 Go 1.22 会将这项特性发布为正式功能。 根据 Go 开发团队技术 l