软件 Bug 引发的十次严重后果

2009年2月份Google的Gmail故障,应该算是最近因软件故障而受到广泛关注的事件。据Google后称,那次故障是因数据中心之间的负载均衡软件的Bug引发的。

Gmail故障还仅是导致用户几个小时内无法访问邮箱,并没有造成伤亡。当然了,对某些用户来讲,是非常不便。

但看了这篇文章后,您会发现,Gmail的故障问题真是“小巫见大巫”了。

一触即发的第三次世界大战

1980年,北美防空联合司令部曾报告称美国遭受导弹袭击。后来证实,这是反馈系统的电路故障问题,但反馈系统软件没有考虑故障问题引发的误报。

1983年,苏联卫星报告有美国导弹入侵,但主管官员的直觉告诉他这是误报。后来事实证明的确是误报。

幸亏这些误报没有激活“核按钮”。在上述两个案例中,如果对方真的发起反击,核战争将全面爆发,后果不堪设想。


图1:游戏模拟图

 “漏网”的臭氧层空洞

南极洲上方的臭氧层空洞一直存在但长期未被发现,这是为什么?

1978年,NASA启动臭氧层测绘的计划。在设计之时,用于该计划的数据分析软件忽略了和预测值有很大差距的数据。直到1985年,才发现南极洲上方的臭氧层空洞,但不是NASA发现的(是英国科学家先发现的)。直到NASA重新检测它们的数据,才发现这一错误。在修正错误后,NASA证实南极臭氧层的确有个很大的空洞。


图2:2010年7月19日 臭氧层“CT照片”

 致命的辐射治疗

1985到1987年,Therac-25辐射治疗设备卷入多宗因辐射剂量严重超标引发的医疗事故,其罪魁祸首是医疗设备电力软件的Bug。据统计,大量患者接受高达100倍的预定剂量(治疗),其中至少3人直接死于辐射剂量超标。

另一宗辐射剂量超标的事故发生在2000年的巴拿马城(巴拿马首都)。从美国Multidata公司引入的治疗规划软件,其(辐射剂量的)预设值有误。有些患者接受了超标剂量的治疗,至少有5人死亡。后续几年中,又有21人死亡,但很难确定这21人中到底有多少人是死于本身的癌症,还是辐射治疗剂量超标引发的不良后果。

阿丽亚娜5型火箭的杯具处/女秀

1996年6月4日,阿丽亚娜5型运载火箭的首航,原计划将运送4颗太阳风观察卫星到预定轨道,但因软件引发的问题导致火箭在发射39秒后偏轨,从而激活了火箭的自我摧毁装置。阿丽亚娜5型火箭和其他卫星在瞬间灰飞烟灭。(见图3)

后来查明的事故原因是:代码重用。阿5型的发射系统代码直接重用了阿4型的相应代码,而阿4型的飞行条件和阿5型的飞行条件截然不同。此次事故损失3.7亿美元。

图3: 阿丽亚娜5型火箭爆炸瞬间

有兴趣的朋友可以详见《阿丽亚娜5型火箭发射失败的调查报告》。

飞行事故

1994年在苏格兰,一架吉努克型直升飞机坠毁,29名乘客全部罹难。然而最初指责声都指向飞行员,但后来有证据表明,直升飞机的系统错误才是罪魁祸首。

另外一次因软件而引发的飞行事故发生在1993年。瑞典的一架JAS 39鹰狮战斗机因飞行控制软件的Bug而坠毁。

消失在太空

在制造其火星气候轨道探测器时,一个NASA的工程小组使用的是英制单位,而不是预定的公制单位。这会造成探测器的推进器无法正常运作。正是因为这个Bug,1999年探测器从距离火星表面130英尺的高度垂直坠毁。此项工程成本耗费3.27亿美元,这还不包括损失的时间(该探测器从发射到抵达火星将近一年时间。)

火星气候轨道探测器
图5:火星气候轨道探测器

太空中看到的爆炸

据传,在冷战时期,CIA曾成功向前苏联“输出”一个有设计缺陷的控制软件,该软件用来控制天然气主管道。(KGB从一家加拿大公司窃取该软件。)那个植入的Bug最终引发了1982年的西伯利亚天然气管道大爆炸。

CIA前高/官里德回忆道:“那次爆炸的结果是非常惊人的,它是除了核爆炸之外最壮观的爆炸之一,腾起的熊熊大火甚至从太空中都能看到,并已被卫星拍摄了下来。”

虽然这个例子是有意而为之的,但其足以证明软件缺陷可以引发的致命后果。

仔细测试:不仅能省钱,更能救人

虽然本文中提到了10个例子,但这只是冰山一角。全球每年因软件缺陷引发的问题数不胜数。

软件缺陷的代价极其昂贵。2002年,美国国家标准与技术研究所的一项研究表明,软件缺陷给美国每年造成的损失高达595亿美元。想想全球这个数额会是多大。那项研究还证实:超过1/3的损失——高达222亿美元,原本稍加测试,即可避免。

后记

有些缺陷或许只会引发小毛病,但飞行控制系统软件和医疗设备软件,还有其他和人命相关的软件,绝不应该出现因程序问题,而给民众生命财产带来无端灾难。

 

参考来源:Wikipedia和Pingdom   编译:伯乐在线

【如需转载,请标注并保留原文链接、译文链接和译者等信息,谢谢合作!】

 

1 收藏 5 评论

关于作者:黄利民

伯乐在线联合发起人,关注 IT 和互联网。 个人主页 · 我的文章 · 97 ·  

相关文章

可能感兴趣的话题



直接登录
最新评论
  • 余粮   2010/07/26

    这个Bug导致的后果最恐 怖 "一触即发的第三次世界大战" :27:

  • 可儿   2010/08/03

    Oh,my god!真是令人扼腕叹息啊!本来就是一个小小的Bug,本来就是一个可以发现的失误,本来就是一个可以避免的灾难,却因为一时的疏忽,而导致不可磨灭的后果!

    就像是马掌少了一个小小的钉子,却导致一场战役的失败!不可有一丝的马虎,我们要从这些灾难中吸取教训!

  • 匿名   2010/11/10

    没啥好大惊小怪的。

  • luulsj   2013/06/26

    的确是细节决定成败,虽然未必都是如此,但是我们在软件开发中还是要做到一丝不苟的。加油。

  • 姜争辉_十一不哭 Java Programmer 2015/10/23

    我们可能制造了相同的Bug,正是因为我们从事的行业不同,才导致大小不同的后果

跳到底部
返回顶部