在 Quora 看到了「What are some famous bugs in the computer science world?」这个问题,整理了部分楼的答案与大家分享,之后还有比较有趣的答案会继续整理,也欢迎大家在留言板中补充。

Windows phone 显示插入光盘

计算机历史上一些出了名的 Bug0

这真是一个非常搞笑的 Bug,当你的手机提示你插入光盘的时候,你会是啥反应?

这是之前 Windows 系统手机的用户见过的 Bug,设备随机重新启动,并显示一个屏幕,指导用户将光盘插入到您的智能手机。

鸟叔的《Gangnam Style》 打脸 YouTube

在YouTube 刚开发时,没有人会想到一个视频会有 20 亿多的浏览量,更确切的说是, 2,147,483,647,这个数字是 32 位有符号整数的最大值,用于展示视频的浏览量。

直到鸟叔的《Gangnam Style》的登场,打破了这个最大值。导致了播放量变成了这样:

计算机历史上一些出了名的 Bug1

这个事故是因为一个带符号的整数 “wraps arounds” (作为二进制的补码),当到达了最大值,旋即,这个+1的最大值变为了最小负值,在这种情况下就是 -2,147,483,648。

Google 已经将浏览量改为了 64 位的有符号整数,使我们很安全直到下一个 9,223,372,036,854,775,807 + 1 的浏览量出现。

 Ping of death

Ping of death,这个 Bug 在 1996 年 12 月,地球上几乎每个程序员和网络工程师都知道并且试图修复他,直到今天,Google 上仍有关于它的 194,000 条搜索结果。Ping of death 是对计算机系统的一种攻击,它不断向计算机发送畸形的或者其他恶意的 ping。

正确形成的 ping 包的大小通常为 56 字节,或当考虑因特网协议报头时为 64 字节。但是,任何 IPv4 数据包(包括 ping)都有可能大到 65,535 字节。一些计算机系统从未被设计正确处理大于最大分组大小的 ping 分组的处理方式,因为它违反了 RFC 791 中记载的互联网协议。像其他大而精确的包,Ping of death 在传输之前被分成 8 个八位字节的组。但是,当目标计算机重新组装畸形数据包时,就会发生缓冲区溢出,导致系统崩溃并潜在地允许注入恶意代码。

阿丽亚娜-5 运载火箭的悲剧处女秀

1996 年 6 月 4 日,阿丽亚娜-5 型运载火箭首次测试发射,原计划将运送 4 颗太阳风观察卫星到预定轨道,但却在火箭发射后 37 秒被迫自行引爆,肇因于 64 位元的运算错误地变为 16 位元的运算,造成程式崩溃后处理器发生数字溢流,将感测角度的垂直读值错误的代入到水平值做运算,导致火箭在高速下进行 90 度水平滚转而崩解,触发自毁装置的启动。总结来说是控制火箭飞行的软件故障而非无法运算。3.7 亿美元,瞬间灰飞烟灭。

1990 年的 AT&T 长途电话网络崩溃

在 1990 年的时候,美国电信夜巨头 AT&T 对其交互软件系统进行了一次补丁升级,但补丁软件包中有一行代码出现了错误,直接造成了 AT&T 半个网络系统瘫痪,最开始的时候问题只是出现在纽约,当时 AT&T 的一个系统被迫停机,进行路由器维修,但到了后来,错误的信号直接导致了 AT&T 服务的大规模瘫痪。据事故报道,是在代码的 switch 语句中跟踪到错位的 break 语句。貌似这个坑到现在依然掉进很多人。

纽约银行的计算机系统崩溃

1985 年 11 月 21 日,纽约银行的计算机系统崩溃,因为最终确定是 16 位整数的溢出。导致他们当天无法通过 FED 电汇处理付款,作为交易政府债券的公司的主要清算银行,不得不在下午从纽约联储紧急借款超过 200 亿美元(当时,这是 FED 最大的一笔贷款)。纽约联储局通常在下午 2:30 关闭电汇,但那天一直开到了星期五凌晨1:30,去试图调解 BNY,仍然无果,直到 22 日才得以解决。这个问题最终使他们花费了超过 400 万美元(1985年的真实货币),并且银行总裁几个月后还必须向参议院银行委员会解释 16 位整数和 32 位整数的区别。

余下全文(1/3)

本文最初发表在微信公众号,文章内容属作者个人观点,不代表本站立场。

分享这篇文章:

请关注我们:

发表评论

电子邮件地址不会被公开。 必填项已用*标注