Oleg Zabluda's blog
Saturday, October 20, 2012
 
Therac-25 was a radiation therapy machine produced by Atomic Energy of Canada Limited (AECL). It was involved in at...
Therac-25 was a radiation therapy machine produced by Atomic Energy of Canada Limited (AECL). It was involved in at least 6 accidents in 1985-1987, where patients were given massive 100x overdoses of radiation (20000 rad), causing serious injures and 3 deaths, due to

- Software race condition + arithmetic overflow (PDP11 assembly)
- Absence of hardware interlocks. Software was reused from older models, which did have hardware interlocks, masking software defects "proving" that software was reliable, since there was no reporting of triggering.

The system was designed and developed in a way that made it non-testable:

- Therac-25 was never tested with the combination of software and hardware until it was assembled at the hospital.
- The failure only occurred with a particular nonstandard improbable sequence of keystrokes within eight seconds. This sequence of keystrokes was improbable, and it took some practice before operators were able to work quickly enough to trigger this failure mode.
- The hardware provided no way for the software to verify that sensors were working correctly
- AECL personnel, as well as machine operators, initially did not believe complaints.

"An Investigation of the Therac-25 Accidents" from IEEE Computer, Jul 1993
http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html
[...]
A significant amount of software for life-critical systems comes from ... firms that fit the profile of those resistant to or uninformed of the principles of either system safety or software engineering.

It is still a common belief that any good engineer can build software, regardless of whether he or she is trained in state-of-the-art software-engineering procedures. ...

Most accidents are system accidents; that is, they stem from complex interactions between various components and activities. To attribute a single cause to an accident is usually a serious mistake.
[...]

http://en.wikipedia.org/wiki/Therac-25
http://en.wikipedia.org/wiki/Therac-25

Labels:


| |

Home

Powered by Blogger