计算机历史上一些出了名的 Bug
在 Quora 看到了「What are some famous bugs in the computer science world?」这个问题,整理了部分楼的答案与大家分享,之后还有比较有趣的答案会继续整理,也欢迎大家在留言板中补充。
Windows phone 显示插入光盘
这真是一个非常搞笑的 Bug,当你的手机提示你插入光盘的时候,你会是啥反应?
这是之前 Windows 系统手机的用户见过的 Bug,设备随机重新启动,并显示一个屏幕,指导用户将光盘插入到您的智能手机。
鸟叔的《Gangnam Style》 打脸 YouTube
在YouTube 刚开发时,没有人会想到一个视频会有 20 亿多的浏览量,更确切的说是, 2,147,483,647,这个数字是 32 位有符号整数的最大值,用于展示视频的浏览量。
直到鸟叔的《Gangnam Style》的登场,打破了这个最大值。导致了播放量变成了这样:
这个事故是因为一个带符号的整数 “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 位整数的区别。
本文文字及图片出自 微信公众号
你也许感兴趣的:
- 我是如何在第一款登月游戏中发现一个 55 年前的漏洞的
- 【外评】航空公司总是把 101 岁的老太太误认为婴儿
- 【译文】经常嗡嗡叫的虫子(bug)
- 【程序员搞笑图片】要不要上报?
- 【译文】满月时,代码工作异常
- 【译文】bug 经济学
- 【译文】一行代码如何造成 6000 万美元的损失
- 我所见过的最奇怪的Bug
- Google在一个函数中放入2万个变量,引发Firefox大崩溃
- 离职两年后,程序员遭前东家索赔:Bug 是你写的
你对本文的反应是: