【译文】经常嗡嗡叫的虫子(bug)

真正的虫子、代码中的bug ,或 一些干扰都可能影响您的项目,并导致许多不同的后果。在本文中,我们收集了一些臭名昭著、引人入胜的错误。让我们从别人的错误中吸取教训吧!

前言

任何人都可能犯错。这是生活的常态。这本无可厚非,但有些错误已经臭名昭著,在互联网历史上留下了永远的印记。今天,我们就来谈谈这样的错误,或者说是导致各种后果的错误。

真正的虫子

你还记得第一个 bug 的故事吗?1947 年 9 月 9 日,Mark II 计算机操作员发现了一个奇怪的东西。那是一只飞蛾。故事是这样的:被称为 “神奇的格蕾丝 “和 “COBOL 奶奶 “的传奇人物格蕾丝-霍珀发现一只昆虫卡在面板 F 上继电器 N70 的继电器触点之间。

因此,类似的事情发生在 2023 年。

TechTuber NorthWestRepair 的专家们在自己的频道上分享了一段视频,他们试图找到英伟达 RTX 4090 Founders Edition 显卡无法工作的原因。显卡的主人说,显卡显示出了 “生命迹象”,但显示器上却没有任何图像。

显卡维修首先是短路检查和电压测量,然后是显微镜缺陷检查。检查发现图形处理器出现故障。他们决定把显卡拆下来,结果发现了一个真正的 “bug”。那是一只苍蝇。

清理后,测试表明显卡开始正常运行。

破坏太空飞行的复制粘贴

这是一个关于一个错误的故事,估计花费了 70 亿美元和 10 年的时间。这是阿丽亚娜5号太空运载火箭的开发成本。

阿丽亚娜 5 号是欧洲的一次性运载火箭。其设计目的是将中型和重型航天器送入地球轨道。约有一千家制造公司参与了运载火箭的制造。一切都进行得很顺利,但发射后不到 40 秒,火箭就爆炸了。爆炸发生在 1996 年 6 月 4 日。

视频:https://youtu.be/PK_yguLapgA

在 4000 米的高空,阿丽亚娜 5 号偏离了飞行轨道并自毁。1996 年 6 月 13 日,一个特别委员会开始调查这起坠机事件。7 月 19 日,他们发布了一份详细的事故报告。

长话短说,错误出在开发人员身上。他们复制粘贴了一个早期火箭模型的控制程序代码,而这个火箭模型已经成功飞行了 100 多次。然而,他们并没有考虑到阿丽亚娜 4 号的飞行轨迹和水平速度是不同的。

包含错误的火箭代码片段。

要了解有关此案例的更多信息,请阅读 “A space error:整数溢出 370.000.000 美元 “一文。

“Cupertino with our Italian comrades proved to be very fruitful”

在给家人、朋友和同事写信时,我们都要经常使用自动更正功能。有时,它能帮助我们避免拼写错误,但有时,它却不尽如人意。下面这个故事就讲述了一个不太成功但却很有趣的自动更正案例。

您一定对 “cooperation “一词不陌生。英语规则将这个词拼写有另一种变体为 “co-operation”。

然而,微软 Word 等早期拼写检查系统中的许多词典都没有将 “cooperation “列入正确单词列表。如果智能系统建议将该选项替换为连字符,那就再好不过了。不过,它建议用 “Cupertino”(加利福尼亚州的一个城市名)来替换这个词,这可能会让你大吃一惊。

这就是为什么在北约、联合国和其他组织的档案中,仍有许多文件包含 “Cupertino “一词,而不是 “cooperation”。

下面就是其中一个例子:”Cupertino with our Italian comrades proved to be very fruitful.”。

黑色星期一

不,这与黑色星期五和市场销售无关。这是道琼斯工业平均指数跌幅最大的一天。

道琼斯工业平均指数是《华尔街日报》编辑和道琼斯公司联合创始人创建的几个股市指数之一。它包括 30 家美国最大公司的股票价格,如苹果、可口可乐和英特尔。

1987 年 10 月初,该指数开始下跌。有几个事件被认为是可能的原因:波斯湾地区的军事升级、第一夫人南希-里根健康状况的不幸消息、西德和日本收紧税法等。

于是,1987 年 10 月 19 日,黑色星期一发生了。

这就是投资者的黑色星期一。截图来源:Ycharts:Ycharts.

这是最大的一次股灾,不仅影响了美国,还影响了澳大利亚、加拿大、英国等其他国家。

那天之后,人们将这次崩溃直接归咎于开发者。尽管专家们仍在争论其真正原因。

不过,根据官方说法,是程序交易错误导致了这场危机。事情是这样的:一个特殊的程序自动进行交易,这样投资者就不必持续监控金融报价和手动执行所有操作。机器由市场走势引导:指数上涨–买入,指数下跌–卖出。

当市场震荡时,机器同时开始卖出价值数百万美元的股票。但是没有人买,于是程序进一步压低了价格。仅一天时间,美国股市就损失了约 5000 亿美元。

不过,这个故事也有一些积极的结果。例如,监管机构全面修订了交易清算协议。他们限制了令交易者不堪重负的程序交易类型。他们还制定了新的监管程序,在指数剧烈波动时暂时停止交易。做市商制度也得到了发展。

一点犯罪

在已经遥远的 2015 年,美国华盛顿特区的监狱发生了一起故障,导致 3200 名囚犯被提前释放。事实上,从 2002 年开始,这个问题就一直存在于这个系统中。

负责计算囚犯在狱时间及其良好行为 “奖金 “的计算机系统出现故障。结果,由于程序故障,囚犯被提前释放了大约 49 天。最后,决定还是将一些囚犯送回监狱,另一些则被送去劳动改造。

我们能从这个故事中得出什么结论呢?首先,这是又一个例子,说明代码中的一个小错误也可能造成严重后果。其次,在追求流程自动化的过程中,不应忘记对流程进行测试。

史上最年轻的黑客

有年幼子女的父母通常会在设备上启用家长控制功能。视频游戏机也不例外。然而,历史上曾有一个孩子成功登录了他父亲在 Xbox Live 服务上的账户。

这个天才少年就是来自圣地亚哥的克里斯托弗-冯-哈塞尔(Kristoffer Von Hassel)。那么,他是如何黑进父亲罗伯特的账户的呢?在猜密码失败后,他只需按几下空格键,然后按回车键。然后就成功了!他成功进入了父亲的账户。

克里斯托弗没有立即承认。他的父亲罗伯特从事信息安全工作。他被儿子的发现所吸引,直接将报告发送给了微软。公司承认了这个漏洞,并进行了修复。

视频:https://youtu.be/VUxgcHydhcI

不要让 bug 毁了你的项目!

从上面的例子中我们可以看到,即使是一行写得不好的代码,也会带来不幸,有时甚至是非常严重的后果。不过,即使是真正的 bug(例如苍蝇:)也会时不时地把事情搞得一团糟。幸运的是,这种情况很少发生。

创建更好、更安全代码的方法之一就是使用静态分析器,如 PVS-Studio。该工具可对 C、C++、C# 和 Java 编程语言进行代码分析。

本文文字及图片出自 Bugs that buzzed a lot

余下全文(1/3)
分享这篇文章:

发表回复

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