本文最初发表在 Medium 博客,经原作者 Kesk -*- 授权,InfoQ 中文站翻译并分享。
1947 年 9 月 9 日下午 3:45,美国计算机科学家兼美国海军少将 Grace Murray Hopper 在 Harvard Mark II 计算机日志中记录了第一个计算机 Bug。她写道:“发现 Bug 的第一个实际案例。”
1996 年 6 月 4 日,欧洲空间局(European Space Agency,ESA)发射的亚利安 5 号(Ariane 5)运载火箭在法属圭亚那的库鲁发射场发射后仅 40 秒就爆炸了。这枚火箭经过长达十年的研发,耗资 80 亿美元后进行首飞,但这一 Bug 的结果导致了 3.7 亿美元的损失。
首飞失败的原因是整数溢出,这是计算机编程中一个普遍存在的错误。在本例中,有人试图在 16 位空间中设置 64 位数字。
当 Chris Reynolds 打开他的 PayPal 电子邮件对账单时,这位宾夕法尼亚州公关主管的账户余额显示为 92,233,720,368,547,800 美元。
在 64 位数字的世界里,这个数字太过庞大,意味着存在编程错误。所幸这一错误很快就被发现了,当他再次登录时,他的账户已经归零。
这个 Bug 存在于大多数 Windows 版本中(Windows 10 除外),包括 Windows XP、Windows 7、Windows Vista 和 Windows 8。如果你有这些版本中的一个,那么你可以在你的操作系统中找到这个 Bug。
步骤:打开 Windows 计算器。输入 4,取平方根,你会得到 2。然后再减去 2。这时,你将在不同版本的 Windows 看到不同的结果,而不是 0。
这个 Bug 的原因是计算器管理 sqrt 操作的方式。结果将保存为浮点数而不是整数,当涉及到浮点计算时出现精度错误,这就是你可以看到的结果。
火星气候探测者号(The Mars Climate Orbiter),耗资 1.25 亿美元,是一个重达 338 公斤的空间机器人,于 1998 年 12 月 11 日发射升空,用于研究火星大气层和气候,并在火星探测 98 计划(Mars Surveyor ’98 program)中充当火星极地着陆者号(Mars Polar Lander)的通信中继器。
这个 Bug 是数学教授 Thomas Nicely 在 1994 年发现的。这个 Bug 是影响第一代 Intel Pentium 处理器浮点运算器的硬件错误。由于这个 Bug,处理器在做浮点除时可能会返回不正确的二进制浮点结果。Intel 将这一失败归因于浮点除法电路使用的查找表中存在条目缺失。
并不是所有的处理器都有这个问题,但是大约有 500 万块有缺陷的芯片被检测出来,Intel 公司在一开始就接受更换芯片的要求,前提是客户能够证明他们受到缺陷芯片的影响。
千年虫或 2000 年问题是指与 2000 年开始的日历数据的存储和格式化有关的事件。由于许多程序在表示四位数年份时只用最后两位数字表示,结果,2000 年和 1900 年无法区分,因此预计会出现问题。
2038 年问题是由于 32 位处理器和 32 位系统的限制造成的。
基本上,当 2038 年 3 月 19 日格林尼治时间 03:14:07 到来时,仍在使用 32 位系统管理日期和时间的计算机将会无法处理这种变化。与千年虫问题相似,届时计算机将无法区分 2038 年和 1970 年。
1991 年 2 月 25 日,海湾战争期间,沙特阿拉伯的爱国者导弹发射台未能追踪和拦截一枚来袭的伊拉克飞毛腿导弹。飞毛腿导弹击中了美国陆军的一个军营,造成 28 名士兵死亡,约 100 人受伤。
YouTube 的计数器之前使用的是 32 位整数,这是一个在计算机架构中用来表示数据的单元。这个 32 位整数确定了它可以计数的最大可能点击率为 2,147,483,647。
《江南 Style》视频点击率超过了最大值,我们就得到了著名的《江南 Style》YouTube Bug。
BSOD 或蓝屏死机(Blue Screen of Death),是 Windows 系统发生致命系统错误后显示的蓝色错误屏幕。它显示了系统已崩溃,此时操作系统已经处于无法可靠地运行的状态。这是由几个不同的问题引起的,例如关键进程意外终止或一般硬件故障。
在 Windows 98 或 Windows 95 中,当系统尝试访问硬盘上的文件 c:\aux\aux 或 c:\con\con 时,就会发生蓝屏死机。
不予置评。
我相信,你读完这篇文章后,当日后你犯了一个错误,就不会感觉特别槽糕了。我们是人,有时也会犯错误。但一定要小心!哪怕是一行简单的拼写错误的代码可能会造成数亿美元的损失。
作者介绍:
Kesk -*-,软件工程师、软件爱好者、科幻作家。
参考阅读:
https://medium.com/swlh/some-of-the-most-famous-bugs-in-software-history-bb16a2ee3f8e
InfoQ 写作平台欢迎所有热爱技术、热爱创作、热爱分享的内容创作者入驻!
还有更多超值活动等你来!
扫描下方二维码
填写申请,成为作者
点个在看少个 bug ?
文章评论