下冰雹 · 2020年10月25日

历史上的重大软件BUG启示录第7篇---美国商务航空公司的烦恼

image.png
2004年12月25日,美国商务航空公司(Comair)由于计算机系统瘫痪,不得不启动“有限”飞行计划,取消圣诞节期间飞往119个城市的1100个航班,给3万名乘客带来麻烦。

虽然航空公司没有透露具体损失数额,但据专家估计,美国商务航空公司这次发生的故障至少造成几百万美元的损失:他们要赔偿乘客,为乘客提供食宿或预定其它航班,同时还要支付公司员工的加班费。

引起计算机系统瘫痪的软件是美国商务航空公司使用的机组调度软件。经过调查,调度软件失败是因为一个16位计数器溢出造成。

当飞机未能按照预定班次起飞,航空公司会重新安排这架飞机的起飞时间和场地。同时,机组调度软件会记录这次重新安排,它使用一个有符号16位计数器来记录所有飞机重新安排的次数。这个16位计数器向上计数到32767后,再增加1次就会溢出为-32768。机组调度软件没有检查该计数器是否溢出,更没有相应的故障处理,所以计数器溢出后,调度软件崩溃。

本来机组调度软件每个月的月初都会将这个计数器清零,而且平均每个月重新安排的飞行次数远低于32767次,但是2004年12月,这个月频繁的风暴造成过多机组重新安排,从而导致该16位计数器溢出!

在软件编写过程中,边界检查和故障处理是必须要有的。程序运行的环境千变万化,在各个方面,我们的程序都要是能“防弹”的。

SANS研究所主管AlanPaller曾说过:(SANS研究所提供的)网络安全漏洞排行榜前20个漏洞,都是由于糟糕的代码编写、不严格的测试、马虎的软件工程实践所造成的。这些问题并非如某些外行所想,是什么“前沿”问题,他们的技术解决方案都存在,可就是没有得到很好的实现!

相关阅读

历史上的重大软件BUG启示录 第5篇---AT&T长途电话网瘫痪事件
历史上的重大软件BUG启示录 第6篇---蠕虫“冲击波”

作者:朱工
首发博客:https://freertos.blog.csdn.net/article/details/53856282
关注FreeRTOS从基础到高级专栏,即时收取FreeRTOS系列文章。
推荐阅读
关注数
3243
内容数
54
介绍FreeRTOS的基本功能,移植与使用。主要介绍FreeRTOS的裁剪、任务、内存管理、队列、信号量、任务通知等基本组成,看完可以会用FreeRTOS,高级篇会深入介绍FreeRTOS的实现细节、方法、技巧。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息