操作员|核能杀手Therac-25:治病机器与杀人软件( 三 )
他发现两次事故中,一个共同点是操作员都修改过处方。
图1是Therac-25的电脑输入界面。Therac-25支持两种射线模式,一种是X射线,一种是电子束,在正常的流程中,操作员依次从左上角输入到右下角,输入患者姓名、射线类型、射线能量等参数,最终光标会停到右下角,也就是绿色高亮的位置。
在这两次事故中,操作员均是在一切都输入完成后发现了错误:射线类型(BEAM TYPE)一栏应该是E(电子束),但错误输入成了X(X射线)。于是他移动光标对其进行了修改,然后又将光标移回了绿色高亮位置,随后点击确认,启动治疗。
文章插图
图1 Therac-25的操作界面
但这个操作还不能保证复现问题,经过反复试验,医生找到了其中的关键,那就是时间,时间要快。
确切的说,修改要在八秒以内,这样bug就能稳定复现。
然后在医生的帮助下,AECL终于找到了Therac-25的bug。
文章插图
图2 Therac-25 伪代码片段
【 操作员|核能杀手Therac-25:治病机器与杀人软件】实际上这个bug相当简单,仅仅是一句放错了位置的代码(见图2),但其隐蔽性要结合Therac-25的操作流程(图3)来解读才能显现出来。
文章插图
图3 Therac-25执行流程图
把大象装冰箱要分三步,用Therac-25进行治疗也要分三步:第一步,操作员输入处方;第二步,Therac-25根据处方进行机器设置;第三步,开始治疗。正常情况下,三步顺序执行没有任何问题。
但这两次事故中操作员修改处方数据,实际上形成了一种并行。
并行是计算机领域的一个术语,指多件事同时执行,很多简单问题一并行就变的难以理解。
Therac-25的原始射线非常集中,而这对人体危害是很大的,所以Therac-25会在射线路径上放置一系列磁铁,来对射线进行分散。
设置磁铁的伪代码见图2。
如果懂一些编程的话,应该可以发现其标黄的用以清除标记位的指令(注释3)放错了位置,应该放在Magnet函数的循环外(注释4)。
不懂编程也没关系,只需要知道这段代码有bug,而这个bug会让Therac-25在调节磁铁的时候,忽略操作员对处方进行的修改。
调整磁铁需要8秒钟左右,这8秒,便是Therac-25的死亡窗口。
在这两起事故中,操作员的修改均发生在这个窗口内,所以修改都没有生效,也就是说,Therac-25实际执行的是X射线模式。
在Therac-25的设计中,X射线模式的能量只有一种,就是系统最大的25MeV,然后用一个射线过滤器来调节高强度的原始射线,将其减弱到治疗所需强度。
只不过这个过滤装置需要手工放置到照射路径上,而在这两次事故中显然都没有,因为操作员都以为正在执行的是电子束模式!
所以悲剧就这样发生了。
患者受到了原始的高强度射线的照射,事故中他们听到的滋滋声不是电流声,而是射线测量器被射线穿透后发出的声音,就像把42度量程的体温计扔到开水里一样,它已经饱和失效了。
后来经过测算,当时的辐射强度为25000伦琴,是站在爆炸的切尔诺贝利反应堆旁边十分钟接受的量的5倍。
两名患者均在不久后死亡。
04 后知后觉的监管第五次事故发生后,医生把事故和复现事故的详细步骤告知了AECL。
AECL立即给所有用户发了一份声明,告知Therac-25存在问题,并给出了修改方案:
禁止向上移动光标。
就这么简单。
然后他又给FDA做了汇报。
这是AECL第一次正式给FDA汇报问题,前面四起事故中,只有第二起(发生在加拿大)AECL告知了美国的FDA,但只含糊的说Therac-25存在一个需要“目视检查”的问题,而且他还进行了召回。
- 首销斩获各大平台冠军,iQOO 9系列到底有什么杀手锏?
- 《这个杀手不太冷静》曝“口技达人”版短预告 魏翔揭发而起笑翻天
- 《杀手3》第二年详细情报明日公布 包含超多新内容
- 华为|华为再现天才少年,科研成果让人惊叹!任正非:这是华为的杀手锏
- 高通骁龙|高通新骁龙8:能效只是旗舰敲门砖,影像才是它的杀手锏
- 显示器|31.5英寸4K显示器999元!HKC拿出杀手锏,这价格还要求啥?
- 浓烟是火场第一“杀手”
- 特斯拉|央视痛批大数据杀熟大数据杀手你遇见过吗?一起聊聊
- 淘宝|央视痛批大数据杀熟大数据杀手你遇见过吗?一起聊聊
- 平台会对“好评返现”痛下杀手吗