庞巴迪客机软件遭遇bug,导致飞机一路“跑偏”

作者 | 万佳、核子可乐

据 The Register 报道,庞巴迪飞机上的飞行管理系统(FMSes)曝出意外 bug,可能导致客机在尝试复飞动作时出现“左右不分”的情况。

复飞,指的是当飞行员在无法保证安全着陆时重新将飞机拉起,经过转变后再次尝试着陆的流程。通过预先设定好的精确路径,复飞动作可以帮助飞机进入下一轮着陆姿态、帮助飞行员尽快做出新的尝试。

当飞行员对预设的高度限制做出调整时,这个 bug 会导致客机朝着错误的方向转向。

1要命的 bug

据悉,该飞行管理系统由罗克韦尔柯林斯航空航天公司制造。之后,配备在庞巴迪 CRJ-200 飞机上。

这项 bug 最初发现于 2017 年,当飞行员在仪表着陆系统的“复飞”程序中手动编辑预设“爬升”高度时,即会被触发。一旦飞行员在极寒天气下使用飞行管理系统中的温度补偿功能,原本应该左转的飞机就会朝向右转——反之亦然。

从理论上讲,这样的错误很可能导致客机坠毁。当然,由于驾驶舱内两位优秀的飞行员一直在专注接管,因此发生灾难性后果的几率其实很低。

民用航空管理局发布的英国萨姆堡机场图表。其中展示的虚线与“242”编号即为复飞路径。

当初,飞往加拿大圣约翰堡机场的 CRJ-200 机组人员在使用飞行管理系统的温度校正功能时首次发现了这项漏洞。他们很快意识到,软件在按照约定的复飞路径操作时会将飞机转向错误的方向。事后,问题被迅速上报给监管当局及相关制造商。

根据一位专业飞行员的解释,温度校正是现代飞行管理系统中的一项必备功能,可帮助飞机在根据仪表飞行规则(或自动驾驶仪)所公布的进场航线飞行时,将飞机保持在安全的离地高度上。进场航线在设计之初就考虑到一系列特定大气条件,当然也包括标准温度。而在现实环境中的温度下降到特定水平之外时,飞行员就必须对高度表做出修正,确保飞机始终保持安全的离地高度。在相同的大气压力之下,温度越低、高度计的计数误差就越大。

而在美国联邦航空局网站上发布的 PPT 演示文稿中,罗克韦尔柯林斯公司解释道,“Pro Line 4 MC 软件设计中存在一项 bug,会导致飞行员在复飞过程中对程序参数做出修改时,预先定义的飞机转变方向也发生变化……在编辑爬升高度字段时,飞行管理系统可能会将原本数据库内存储的转变方向更改为错误方向。”

该公司表示,错误的转变方向“具体取决于仪表离场程序与复飞程序中的航段类型与几何形状。”换句话说,这个 bug 只会在少数特定条件下发生。

罗克韦尔柯林斯公司在 2017 年底发布的另一份文件中指出,“如果机组人员对「爬升」高度字段进行编辑,则离场与复飞路径的最短转弯方向会与进入下一航段所需的转变方向有所不同,进而引发这个问题。”

尽管这项 bug 的缓解措施与变通方案都在短时间内发布完成,但庞巴迪与罗克韦尔柯林斯双方均明确反对民航管理局就此事采取正式措施。而就在本周,欧洲已经发布一项强制性适航指令,要求使用 CRJ-200 飞机的运营商禁用自动温度校准功能。

两家公司对美国联邦航空局的指令草案表示反对,认为相较于直接禁止使用自动计算器,修复 bug 显然要更靠谱一些。

2臭名昭著的波音 737 Max 软件问题

飞行控制软件中的 bug 确实很少见,但也不乏先例。根据空客和波音两大巨头多年以来的切身体会,客机中的大部分 bug 源自无法预见的内存溢出。空客 A220(原名 Bombardier C 系列)的设计方案最初就是由庞巴迪提供,并于去年曝出发动机软件存在问题;波音 737 飞机上也出现过一个罕见的 bug,会在飞行员尝试在全球特定七条跑道上降落时被触发。

当然,最广为人知、也最臭名昭著的,还得说波音 737 Max 的软件问题。

2019 年,波音 737 MAX 坠机事件曾引发全球关注。当年 3 月 10 日,埃塞俄比亚航空公司一架波音 737 MAX 8 客机在飞往肯尼亚途中坠毁。机上有 149 名乘客和 8 名机组成员,无人生还。2018 年 10 月 29 日印尼狮航波音 737 Max 坠落,189 人罹难。两起致命坠机事件后,波音 737 Max 被全球各大航司停止运行。

当时,波音的资深工程师认为事故原因之一可能是软件外包,而将软件外包的起因则是波音裁撤资深研发以削减成本。

后来,美国国会众议院发布的波音 737 Max 系列飞机的调查报告表明,这两起致命空难是由于波音公司及美国联邦航空局“犯下了一系列严重错误”共同导致的。报告还指出,美国联邦航空局的监管体系“存在严重问题”,亟须进行彻底改革。

报告称,这两起事故是“波音公司的工程师错误的技术假设、波音公司管理缺乏透明度以及美国联邦航空局监管严重不足共同引起的”。

简言之,这份报告确认了飞机确实存在软件问题。

调查人员指出,波音公司在“明知 737MAX 系列飞机存在设计缺陷的情况下”,刻意向航空公司、飞行员以及监管机构隐瞒相关信息,并通过商业关系影响监管机构的管理和审查。

3写在最后

随着航空业的发展,飞机上配备和使用的软件不断增多,这意味着软件在飞机上的地位也越来越重要。当一个软件 bug 出现在飞机上,事关的则是数百人生命和航空业的前途。稍有不慎,后果不堪设想。正如波音公司,曾因软件化之路满载荣光,如今却毁誉参半!

今日好文推荐

XML之父:不对代码做测试就像“上完厕所不洗手”

为什么软件工程师出身的CEO越来越“香”?

70万行代码、历时20年,一名开发人员写出的史诗般的计算机程序

被疫情加速的通信云企业,“慢”下来后该走向何方?


InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。回复“资料”,获取资料包传送门,注册 InfoQ 网站后,可以任意领取一门极客时间课程,免费滴!大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!

点个在看少个 bug 👇