百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Firefox一个22年的陈年老bug被解决了,解决小伙是个华人小伙

bigegpt 2024-09-11 00:56 4 浏览

在最新推送的Firefox 119版本中修复了一个存在了22年的一个陈年老Bug,这个代码编号为Bug 148624。

为了这个Bug存了这么久都没有修复?这个Bug又是被谁解决的呢?让虫虫给你慢慢道来。

概述

22年前的2002年该漏洞第一次被发现。一个工程师Adam Price在Mac上使用当时还被称为Mozilla(Mozilla/5.0)的软件时遇到了持续存在的问题,工具提示条:

如果将鼠标悬停在工具栏链接上,并等待一秒钟,就会出现一个带有链接描述的黄色小框。此时,如果在使用command-tab将Mozilla移至后台,则该黄色小框将会永久保留在前台。要关闭它的唯一方法是再次将Mozilla调出来到前台,并将鼠标从工具栏上移开。

还有一些与此问题相关的其他错误,Price的这个可重新的Bug情况,在此后的几周、几个月、几年、以及未来二十多年里陆续被其他人遇到并验证。

多年来,人们会检查该线程或将其他错误标记为该问题的重复项。 略有有时它看起来是固定的,只是程序员和评论者发现它在不同版本中 不同,或者之前的修复似乎是偶然的。 有时它似乎也出现在Windows或Linux中。 一位评论者丹尼斯 (denis) 在21周年之际指出:“我有点偏向让它永远存在。感觉就像是过去的遗迹。”

问题的解决

22年后这个问题终于被一个华人小伙子解决,这个小伙子,根据名字推断是个华人小孩,他名字叫Zhu Yifan(朱一凡),小伙子99年生,斯坦福本科数学、电气工程硕士,电气工程博士。

在补丁邮件中,小朱表示他在Linux版的Thunderbird中遇到了这个错误,“屏幕上漂浮着看似随机的文本片段”。在虚拟桌面之间频繁切换导致主题行漂浮在屏幕上,这“非常烦人”。 很小块小朱学会了切换回Firefox或Thunderbird,并在切换回来之前移动光标。小朱对此感到莫大兴趣,于是对其进行研究,并试图找到问题所在,通过公开信息,他了解到这个Bug已经公开了20多年了,还没有被修复。由于,这是一个很小的仅仅影响“观感”的小问题,不会影响其他使用和导致系统崩溃,所以大家一直选择了“忍受”。

但是作为一个完美主义者(估计是处女座的),且有丰富编程经验的小伙子怎么能忍受这样的“小问题”呢。

所以,虽然在像火狐浏览器这样复杂的项目中没有任何经验,虽然此前 “从未为开源项目做出过贡献”。 所以,“那么,为什么不现在做一个呢,就做这个呢?”

开始的进展很不顺利。小伙子在整个代码库中搜索“Tooltip”,检查可能出问题的代码,并插入调试打印语句来跟踪执行。

最终小朱终于找到了问题所在:

“当鼠标悬停在某个元素上时,计时器就会启动以显示工具提示。计时器在鼠标移出事件时取消,而当使用键盘快捷键切换窗口或虚拟桌面时,Firefox则没有收到此消息。”

小朱推送了一个提交,在该提交中,让工具提示的显示和Firefox焦点同步,而不是鼠标离开应用程序。在接下来的几个小时里,小朱收到了Emilio Cobos álvarez的来信,他改进了小朱的方法并帮助将提交到代码库中。虽然修复造成了一些回归,问题终于修复了。

在提交这个Bug的修复代码时候小朱刚开始攻读电气工程博士学位。

对这个问题,大家只是好奇为什么这样的错误会持续这么长的时间,这个Bug仅仅只是造成外观上的不便,而且又不好复现,而且其他有很多比它更严重的Bug还需要排队解决,所以这个Bug就这样日复一日地被“陈”了下来。

相关推荐

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

前言作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来。实际上...

Redis数据库从入门到精通(redis数据库设计)

目录一、常见的非关系型数据库NOSQL分类二、了解Redis三、Redis的单节点安装教程四、Redis的常用命令1、Help帮助命令2、SET命令3、过期命令4、查找键命令5、操作键命令6、GET命...

netcore 急速接入第三方登录,不看后悔

新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢。如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下:https://oauthlogin.net/前言此次带来得这个小项目是...

精选 30 个 C++ 面试题(含解析)(c++面试题和答案汇总)

大家好,我是柠檬哥,专注编程知识分享。欢迎关注@程序员柠檬橙,编程路上不迷路,私信发送以下关键字获取编程资源:发送1024打包下载10个G编程资源学习资料发送001获取阿里大神LeetCode...

Oracle 12c系列(一)|多租户容器数据库

作者杨禹航出品沃趣技术Oracle12.1发布至今已有多年,但国内Oracle12C的用户并不多,随着12.2在去年的发布,选择安装Oracle12c的客户量明显增加,在接下来的几年中,Or...

flutter系列之:UI layout简介(flutter-ui-nice)

简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。在flutter中,基本上所有的对象都是wi...

Flutter 分页功能表格控件(flutter 列表)

老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来。PaginatedDataTablePaginatedDataTable是一个带分页功能的DataTable,...

Flutter | 使用BottomNavigationBar快速构建底部导航

平时我们在使用app时经常会看到底部导航栏,而在flutter中它的实现也较为简单.需要用到的组件:BottomNavigationBar导航栏的主体BottomNavigationBarI...

Android中的数据库和本地存储在Flutter中是怎样实现的

如何使用SharedPreferences?在Android中,你可以使用SharedPreferencesAPI来存储少量的键值对。在Flutter中,使用Shared_Pref...

Flet,一个Flutter应用的实用Python库!

▼Flet:用Python轻松构建跨平台应用!在纷繁复杂的Python框架中,Flet宛如一缕清风,为开发者带来极致的跨平台应用开发体验。它用最简单的Python代码,帮你实现移动端、桌面端...

flutter系列之:做一个图像滤镜(flutter photo)

简介很多时候,我们需要一些特效功能,比如给图片做个滤镜什么的,如果是h5页面,那么我们可以很容易的通过css滤镜来实现这个功能。那么如果在flutter中,如果要实现这样的滤镜功能应该怎么处理呢?一起...

flutter软件开发笔记20-flutter web开发

flutterweb开发优势比较多,采用统一的语言,就能开发不同类型的软件,在web开发中,特别是后台式软件中,相比传统的html5开发,更高效,有点像c++编程的方式,把web设计出来了。一...

Flutter实战-请求封装(五)之设置抓包Proxy

用了两年的flutter,有了一些心得,不虚头巴脑,只求实战有用,以供学习或使用flutter的小伙伴参考,学习尚浅,如有不正确的地方还望各路大神指正,以免误人子弟,在此拜谢~(原创不易,转发请标注来...

为什么不在 Flutter 中使用全局变量来管理状态

我相信没有人用全局变量来管理Flutter应用程序的状态。毫无疑问,我们的Flutter应用程序需要状态管理包或Flutter的基本小部件(例如InheritedWidget或St...

Flutter 攻略(Dart基本数据类型,变量 整理 2)

代码运行从main方法开始voidmain(){print("hellodart");}变量与常量var声明变量未初始化变量为nullvarc;//未初始化print(c)...