08.10.2026 · Signal Titans Editorial
Sechs massive Überdosierungen: Wie der Therac-25 Software die Arbeit von Hardware-Sicherheitsverriegelungen machen ließ

Am 21. März 1986 lag im East Texas Cancer Center in Tyler ein Patient für seine neunte Bestrahlung bäuchlings auf dem Behandlungstisch. Außerhalb des abgeschirmten Raums gab die Bedienerin seine Verordnung ein, bemerkte, dass sie „x“ für Röntgen statt „e“ für Elektronen eingegeben hatte, bewegte den Cursor nach oben und korrigierte den Eintrag. Der Bildschirm meldete „beam ready“. Sie drückte „B“.
Die Maschine stoppte und zeigte „Malfunction 54“. Der Dosismonitor wies eine Unterdosis aus. Im Raum spürte der Patient etwas wie einen elektrischen Schlag. Spätere Rekonstruktionen legten nahe, dass er in weniger als einer Sekunde zwischen 16.500 und 25.000 rad erhalten haben könnte. Eine typische Einzeldosis lag bei rund 200 rad.
Die Maschine war ein Therac-25. Zwischen Juni 1985 und Januar 1987 war sie an sechs bekannten massiven Überdosierungen in den USA und Kanada beteiligt. Nancy Leveson und Clark Turner, die die Unfälle später rekonstruierten, nannten sie die bis dahin schlimmste Serie von Strahlenunfällen in der Geschichte medizinischer Beschleuniger.
Chronologie
Juni 1985, Marietta, Georgia: Ein Patient erleidet schwere Verbrennungen. Der Klinikphysiker fragt den Hersteller Atomic Energy of Canada Limited (AECL), ob die Maschine verantwortlich sein könnte. AECL verneint, und der Unfall wird nie sorgfältig untersucht.
Juli 1985, Hamilton, Ontario: eine zweite Überdosis. AECL macht einen Mikroschalter des Drehtellers verantwortlich, tauscht ihn aus und teilt den Kunden mit, die eigene Analyse zeige eine Verbesserung der Sicherheit um mindestens fünf Größenordnungen.
Dezember 1985, Yakima, Washington: Bei einem Patienten entsteht eine streifenförmige Verbrennung. Im Februar 1986 antwortet AECL schriftlich, der Schaden könne weder von der Maschine noch durch einen Bedienfehler verursacht worden sein.
21. März 1986, Tyler, Texas: die Überdosis mit „Malfunction 54“. AECL-Ingenieure können sie nicht reproduzieren und vermuten ein elektrisches Problem. Am 7. April geht die Maschine wieder in Betrieb.
11. April 1986, Tyler: dieselbe Maschine, dieselbe Bedienerin, dieselbe Meldung, eine weitere Überdosis.
17. Januar 1987, Yakima: eine sechste Überdosis, verursacht durch einen anderen Softwarefehler.
Februar 1987: Die Aufsichtsbehörden der USA und Kanadas fordern die Anwender auf, Routinebehandlungen einzustellen, bis die Maschine repariert ist.
Die Designentscheidung dahinter
Der Therac-25 hatte zwei ältere Geschwister, den Therac-6 und den Therac-20. Bei diesen Maschinen war der Computer eine Bequemlichkeit, aufgesetzt auf Hardware, die auch allein sicher arbeiten konnte. Sie verfügten über unabhängige elektrische und mechanische Verriegelungen.
Der Therac-25 war von Anfang an auf Computersteuerung ausgelegt. Laut Leveson und Turner entschied AECL, nicht alle bestehenden Hardware-Sicherheitsmechanismen zu duplizieren, und verließ sich stattdessen auf Software. Ein Teil dieser Software wurde aus dem Therac-6 übernommen, einige Routinen stammten aus dem Therac-20.
Diese Wahl ist entscheidend für das, was folgte. Die Software war größtenteils von einer einzigen Person in PDP-11-Assembler geschrieben worden, mit wenig Dokumentation. Sie führte mehrere Tasks gleichzeitig aus, die sich Variablen ohne ordentliche Synchronisation teilten.
Grundursache 1: das Acht-Sekunden-Fenster
Nach dem zweiten Unfall in Tyler stellte der Klinikphysiker Fritz Hager gemeinsam mit der Bedienerin genau nach, was sie getan hatte. Sie fanden heraus, dass Geschwindigkeit der Auslöser war. Wenn eine erfahrene Bedienkraft die Verordnung schnell genug bearbeitete, trat der Fehler auf.
Der Mechanismus, wie AECL ihn später der FDA beschrieb, sah so aus. Sobald die Bedienkraft die Dateneingabe abgeschlossen hatte, begann eine Routine, die Ablenkmagnete einzustellen, was etwa acht Sekunden dauerte. In dieser Zeit sollte eine Unterroutine prüfen, ob die Bedienkraft etwas geändert hatte. Doch ein Flag wurde nach dem ersten Durchlauf gelöscht, sodass spätere Durchläufe nicht mehr nach Änderungen suchten.
Änderte die Bedienkraft den Modus von Röntgen auf Elektronen und brachte den Cursor innerhalb dieser acht Sekunden zurück an den unteren Bildschirmrand, zeigte der Bildschirm die neue Einstellung. Die Maschine übernahm sie jedoch nicht vollständig. Sie konnte einen für den Röntgenmodus gedachten Hochleistungsstrahl abgeben, ohne dass das Röntgentarget und die strahlformenden Komponenten in Position waren.
Auf einem Blatt an der Seite der Maschine stand, „Malfunction 54“ sei ein „dose input 2“-Fehler. Nichts, was den Bedienkräften zur Verfügung stand, erklärte, was das bedeutete.
Grundursache 2: ein Zähler, der auf null überlief
Der Unfall in Yakima 1987 hatte eine andere Ursache. Während der Einrichtung wurde eine Ein-Byte-Variable namens Class3 bei jedem Durchlauf einer Testroutine inkrementiert. Ein Wert ungleich null bedeutete: „Kollimatorposition prüfen, bevor die Behandlung freigegeben wird.“
Ein Byte kann nur bis 255 zählen. Bei jedem 256. Durchlauf sprang der Wert auf null, und die Prüfung entfiel. Drückte die Bedienkraft genau in diesem Moment „set“, konnte die Maschine den Strahl einschalten, während der Drehteller in der falschen Position stand. Die Korrektur von AECL war einfach: Die Variable wurde auf einen festen Wert ungleich null gesetzt, statt sie zu inkrementieren.
Warum es niemand bemerkte
Nichts davon setzte böse Absichten voraus. Es genügte, dass sich mehrere vernünftig klingende Annahmen aneinanderreihten.
Die Sicherheitsanalyse von AECL aus dem Jahr 1983 behandelte Software faktisch als zuverlässig und konzentrierte sich auf Hardwareausfälle. Die Fehlermeldungen waren kryptisch, und die Maschine stoppte so oft aus harmlosen Gründen, dass die Bedienkräfte lernten, zum Fortfahren „P“ zu drücken. Eine Bedienkraft sagte aus, es sei nicht ungewöhnlich gewesen, dass irgendetwas die Maschine anhielt.
Das deutlichste Zeichen kam vom älteren Modell. Nach den Unfällen in Tyler stellte ein Physiker der University of Chicago fest, dass der Therac-20 einen ähnlichen Softwarefehler hatte. Auf dieser Maschine brannten dadurch nur Sicherungen durch, weil Hardware-Verriegelungen den Strahl stoppten. Das war seit Jahren immer wieder passiert. Die Hardware hatte den Bug verdeckt.
Die Folgen
Leveson und Turner halten fest, dass Patienten an Komplikationen ihrer Überdosierungen starben und andere schwere Verletzungen erlitten, darunter Lähmungen und den Verlust einer Brust. Die Maschinen wurden Anfang 1987 aus dem Routinebetrieb genommen. Der abschließende Korrekturplan von AECL vom Juli 1987 ergänzte unabhängigen Hardwareschutz wie eine Einzelpuls-Abschaltschaltung und eine Überwachung des Drehtellers, dazu mehr als zwanzig Softwareänderungen.
Was es aufgedeckt hätte
- Unabhängige Hardware-Verriegelungen, die den Strahl stoppen, ganz gleich, was die Software glaubt.
- Wiederverwendeten Code wie neuen Code behandeln, wenn er in ein System mit anderen Sicherheitsannahmen wandert.
- Ordentliche Synchronisation für gemeinsamen Zustand zwischen nebenläufigen Tasks.
- Fehlermeldungen, die den Bedienkräften sagen, wie gefährlich ein Fehler ist, und ausfallsichere Stopps, die sich nicht mit einer einzigen Taste fortsetzen lassen.
- Ein Prozess, der jede gemeldete Verletzung als möglichen Systemausfall untersucht.
Leveson und Turner warnten davor, den Therac-25 als Geschichte eines einzelnen Bugs zu lesen. Sich auf bestimmte Softwarebugs zu konzentrieren, schrieben sie, sei nicht der Weg zu einem sicheren System. Die Frage an die eigenen Systeme ist schärfer: Wenn die Software falschliegt, was steht dann noch zwischen dem Fehler und dem Menschen am anderen Ende?
Quellen
- N. G. Leveson und C. S. Turner, „An Investigation of the Therac-25 Accidents“, IEEE Computer 26(7), Juli 1993
- N. G. Leveson, „The Therac-25: 30 Years Later“, IEEE Computer 50(11), November 2017 (MIT DSpace)
- Ethics Unwrapped, McCombs School of Business, University of Texas at Austin: Fallstudie zum Therac-25
- The Boston Globe, 20. Juni 1986: Bericht über die Therac-25-Überdosierungen (Nachdruck)
- Beitragsbild: DEC-VT100-Terminal, das Terminalmodell, das als Bedienkonsole des Therac-25 diente (illustrativ, keine echte Therac-25-Konsole). Jason Scott, via Wikimedia Commons, CC BY 2.0