现代软件Bug虽然带来诸多困扰,但鲜少危及生命。然而回溯至1985年,一款名为Therac-25的放射治疗设备却因软件缺陷酿成惨剧,被公认为世界上首个致命的软件Bug案例。
这台设备存在致命的竞态条件缺陷,导致至少六名患者接受了超出标准剂量100倍的过量辐射,其中三人因此不幸身亡。
看似创新的双模治疗设备
Therac-25在当时备受医疗界推崇,因为它创新性地将两种治疗模式融为一体:既可进行针对浅层组织的电子束治疗(如皮肤癌),又能执行作用于深层组织的兆伏级X射线疗法。然而这两种模式若被错误切换,将造成灾难性后果。
致命的软件缺陷
与传统设备不同,Therac-25完全依赖软件控制。此前同系列机型Therac-20虽然存在相同Bug,但由于配备电磁机械安全锁,硬件会阻止软件故障导致的危险操作。
研究发现,这一问题在已知的六起事故中具有相同表现。经验丰富的操作员在发现模式选择错误后立即修正,快速的操作输入反而触发了Bug。关键在于辐射模式切换需要8秒缓冲时间,在此期间的操作极易造成系统混乱。
事故时间线与应对
第一起事故发生于1985年6月,最后一次则在1987年1月。起初制造商AECL否认系统存在问题,直到1986年春季在美国FDA介入后才展开全面调查。
留给行业的警示
Therac-25悲剧直接推动了医疗软件领域的规范化变革,要求所有医疗软件必须进行严格的形式验证、全面测试和详尽文档记录。时至今日,这一案例仍被计算机安全领域频繁引用。

