Navigation

  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler































  1. Einleitung
  2. Aufbau des Gerätes
  3. Bedienung
  4. Überwachung
  5. Die Unglücke
  6. Texas-Fälle
  7. Der Texas-Bug
  8. Der Washington-Bug
  9. Fazit
10. Sonstige Fehler
 

Hauptseminar Prof. Huckle - Therac-25


 

Gliederung

1.
Einleitung
    1.1 Konflikt
2. Aufbau des Gerätes
    2.1 Behandlungsraum
    2.2 Drehteller
    2.3 Positionierung des Drehtellers
3. Bedienung des Gerätes
    3.1 Benutzer-Interface
4. Überwachung des Patienten
    4.1 Verfahren bei Komplikationen
    4.2 Fehlermeldungen
5. Die Unglücke
    5.1 Fall 1 - Marietta/Georgia
    5.2 Fall 2 - Hamilton/Ontario
    5.3 Fall 3 - Yakima/Washington
    5.4 Fall 4 - Texas I
    5.5 Fall 5 - Texas II
6. Untersuchung der Texas-Fälle
    6.1 Analyse des Systems
7. Der Texas-Bug
    7.1 Softwareskizze
    7.2 Pseudo-Code
    7.3 Race Conditions
    7.4 Gewöhnlicher Einstellvorgang
    7.5 Darstellung dieser "race conditions"
    7.6 Ursache für Texas-Bug
    7.7 Lösung für Texas-Bug
8. Der Washington-Bug
  8.1 Fall 6 - Yakima/Washington
  8.2 Darstellung Washington-Bug
  8.3 Lösung für Washington-Bug
9. Fazit
    9.1 Konsequenzen
10.Sonstige Fehler
    10.1 London Ambulance Service, 1992




1. Einleitung - Die Therac-Serie

Das medizinische Gerät Therac-25 ist ein Linearbeschleuniger zur Bestrahlung von Karzinomen (Krebs). Therac-25 war das 3. Gerät der Therac-Reihe. Es wurde 1984 freigegeben. Die beiden Vorgänger Therac-6 und Therac-20 waren beides elektro-mechanische Geräte. Einstellungen wurden direkt am Gerät vorgenommen. Als Schutzvorrichtung dienten "Hardware interlocks", eine Art mechaninsche Verrieglung. Die Benutzerführung (für den Operator) wurde bei der Therac-25 maßgeblich verändert. Hier konnten nun die meisten Einstellungen an einer Konsole außerhalb des Bestrahlungsraumes vorgenommen werden.
Die Therac-Serie wurde von der kanadischen Firma AECL (Atomic Energie of Canada Limited) gebaut. AECL war lange Zeit eine staatliche Organisation, bevor sie letztendlich privatisiert wurde.
Insgesamt wurden 11 Geräte der Therac-25-Serie in den USA und Kanada installiert.

Im Gegensatz zu seinen beiden Vorgängern war die Therac-25 ein Dual-Mode-Gerät. Das heißt, dass Patienten sowohl mit Röntgenstrahlen, als auch mit Elektronen direkt behandelt werden konnten.
Der Elektronenmodus wird zur Behandlung von Geweben verwendet, die nahe an der Körperoberfläche liegen. Um auch tiefergelegene Gewebe effizient und "schonend" behandeln zu können, wurde das Gerät um einen Röntgenmodus ergänzt, der die Patienten mit Photonen anstelle von Elektronen bestrahlt.


Um tiefer gelegene Gewebe punktuell bestrahlen zu können, ohne großen Schaden an Nachbargeweben zu verursachen, muß die Energie durch eine Bleiplatte gebündelt werden. Da die Strahlen erst einmal die Platte durchdringen müssen, muß eine viel höhere Energie aufgewendet werden (die ca. 100fache Energie).

Es ist offensichtlich, dass es fatal ist, wenn ein Patient mit Photonen (Röntgenmodus) bestrahlt wird, ohne dass sich die Platte zwischen Gerät und Patient befindet.


1.1 Konflikt

Soviel Strahlung wie nötig, so wenig wie möglich!

Das bedeutet: Um ein Karzinom abzutöten, benötigt man eine gewisse Strahlungsintensität. Man darf andererseits die Strahlung auch nicht zu stark anwenden, um keine benachbarten Gewebe zu beschädigen. Ein Karzinom kann aber nur nachhaltig beseitigt werden, wenn alle Krebszellen abgetötet werden.


2. Aufbau des Gerätes

2.1 Der Behandlungsraum:



2.2 Der Drehteller - Sicht von unten (aus Sicht des Patienten)



2.3 Drehteller-Positionierung

Entscheidend für eine erfolgreiche Behandlung eines Krebspatienten ist die richtige Postionierung des Drehtellers. Eine falsche Positionierung kann fatale Auswirkungen haben.
Wenn sich der Drehteller in der Position für den Röntgenmodus befindet, also sich die Bleischeibe zwischen Gerät und Patient befindet, das Gerät aber mit der Dosis einer Elektronenbehandlung bestrahlt, resultiert eine Unterdosis, die aber keine größere Auswirkung hat, als dass der Patient unnötig beunruhigt wird.
Wenn sich aber das Gerät in der Position für eine Elektronenbestrahlung befindet, die Maschine aber mit der Energie einer Röntgenbehandlung bestrahlt, kommt es zu einer ungeheuren Überdosis, die ca. das 100fache der für den menschlichen Körper verträglichen Dosis beträgt.

Die Positionierung des Drehtellers wird von einem Computer durchgeführt, der durch bestimmte Sensoren die Drehung der Scheibe kontrolliert. Insgesamt werden die Daten von 3 Sensoren aufgezeichnet.
Die gemessenen Werte werden dann anhand einer Software verglichen und überprüft. Dadurch wird eine mechanische Verriegelung, wie sie noch die beiden Vorgängermodelle Therac-6 und Therac-20 hatten, überflüssig.


3. Bedienung des Gerätes

Ein typischer Ablauf einer Behandlung begann damit, dass der zu behandente Patient auf dem Behandlungstisch Platz nahm und der Operator ihn positionierte. Anschließend wurden vom Operator alle notwendigen Parameter eingestellt; in erster Linie der Behandlungsmodus (Eletronen- oder Röntgenmodus). Beim Röntgenmodus wurde für die Intensität der Bestrahlung ein Default-Wert von 25MeV verwendet, der nicht geändert werden mußte; wenn der Operator aber den Elektronenmodus einstellte, mußte er manuell die Intensität einstellen (in der Regel ca. 200rad).
Anschließend wurde der Drehteller positioniert, bei Bedarf die Platte zwischen Patient und Gerät gebracht und nach Belieben weitere Filter eingefügt. Danach wurden die Magneten eingestellt.
Daraufhin verlies der Operator den Behandlungsraum und gab am Terminal die Patientenspezifischen Daten ein.
Das Gerät (die Software) überprüft anschließend, ob die eingestellten Werte mit den tatsächlichen des Gerätes übereinstimmen. Ist dies der Fall, wechselt der Status (der Werte) auf dem Display von UNVERFIED zu VERIFIED.
Nun konnte die Behandlung beginnen.

3.1 Darstellung des Benutzer-Interfaces





4. Überwachung des Patienten

Der Patient konnte während der Behandlung auf 2 Arten beobachtet werden. Durch ein Audio-System, welches akkustische Signale aus dem Behandlungsraum an den Operator-Raum sendet, und durch ein Video-System, so dass der Patient jederzeit auf einem Monitor beobachtet werden konnte. Außerdem konnte der Operator durch die beiden Systeme direkt mit dem Patienten kommunizieren.

4.1 Verfahren bei Komplikationen

Sollte es während der Behandlung zu Fehlfunktionen des Geräts kommen, so gab es verschiede Unterbrechungsverfahren. Beim ersten Auftreten eines Fehlers erschien auf dem Display des Operators eine Fehlermeldung ("Treatment Pause"). Durch Drücken der Taste "P" konnte die Behandlung aber in der Regel fortgesetzt werden, ohne am Gerät etwas zu ändern.
Nach fünfmaligen Drücken der P-Taste schaltete das Gerät schließlich in den "Treatment Suspend"-Modus, der die Behandlung unterbrach und einen Neustart der Behandlung erzwang.

4.2 Fehlermeldungen

Bei Fehlfunktionen oder Inkonsistenzen des Gerätes erschienen auf dem Display der Operators Fehlermeldungen. Leider legten die Systementwickler keinen großen Wert auf Fehlermeldungen, so dass keine vernünftige Fehleranalyse durchgeführt werden konnte.
Insbesondere waren diese Fehlermeldungen sehr kryptisch (z.B. "Malfunction 54") und an keiner Stelle dokumentiert, so dass man nur wußte, dass ein Fehler auftrat, nicht aber warum.
Eine andere Schwachstelle war, daß Fehlermeldungen (ohne erkennbaren Grund) sehr häufig auftraten. Durch ein anschließendes Drücken der P-Taste konnte die Behandlung ohne Schwierigkeiten fortgeführt werden.

Da Fehler sehr häufig auftraten und es auch selten eine erkennbare Ursache gab, waren Operatoren sehr schnell an diese Fehlermeldungen gewöhnt und schenkten diesen keine besondere Aufmerksamkeit mehr.
Nicht selten kam es zu über 50 Fehlern pro Tag.
Das fast unermeßliche Vertrauen in die eingebauten Sicherheitsmechanismen (die aber fast ausnahmslos softwareseitig implementiert waren), trug ebenfalls dazu bei, Fehlern keine ausreichende Beachtung zu schenken. So war eine Überbestrahlung aus Sicht der Operatoren und des Herstellers ausgeschlossen.


5. Die Unglücke

Zwischen 1985 und 1987 kam es insgesamt zu 6 massiven Überdosen, die zum Teil tödlich endeten.
Die ersten Vorfälle wurden seitens der Regierung und des Herstellers nicht untersucht, da eine Fehlfunktion des Gerätes ausgeschlossen wurde.
1987 wurde Therac-25 aber dann letztlich zurückgerufen.

Für die Überdosis der 6 Fälle waren 2 völlig verschiedene Fehler verantwortlich, so dass im Folgenden die 6 Fälle in 2 Gruppen aufgeteilt werden:

5.1 Fall 1: Marietta, Georgia, Juni 1985

Im Juni 1985 wurde in Marietta im US-Bundesstaat Georgia eine 61-jährige Frau an den Lymphknoten bestrahlt. Hierfür sollte das Gerät die Patientin im Elektronenmodus mit 200rad bestrahlen. Tatsächlich wurde die Frau aber mit ca. 15000rad bestrahlt. Direkt nach der Behandlung traten Lähmungen im Bereich von Schulter und Arm auf.
Das Gerät war seit bereits 6 Monaten im Einsatz.
Dieser Fall wurde nie näher untersucht; der Hersteller AECL schloss aber Fehler seinerseits aus.

5.2 Fall 2: Hamilton, Ontario, Juli 1985

Ungefähr 1 Monat nach der ersten Überbestrahlung sollte im US-Bundesstaat Ontario eine Frau mit Gebährmutterhalskrebs mit einer Dosis von 200rad bestrahlt werden.
Während der Behandlung stoppte das Gerät mit einem "HTILT"-Fehler. Auf der Konsole des Operators erschien die Meldung "NO DOSE". Der Operator setzte daraufhin wie gewöhlich die Behandlung fort. Kurze Zeit später trat derselbe Fehler erneut auf. Nach 4 Wiederholungen des Fehlers stoppte das Gerät mit einem automatischen Reset.
Die Patientin verstarb 5 Monate nach der Behandlung.
Die Überdosis wird ebenfalls auf ca. 15000rad geschätzt.

5.3 Fall 3: Yakima, Washington, Dezember 1985

Nach der Überdosis von Hamilton wurde im September 1985 das Therac-25-Gerät in Yakima/Washington vom Hersteller AECL ausgebessert. Aufgrund eines defekten Microswitches konnte es zu einem 1-bit-Fehler kommen, aus dem schließlich falsche Positionsdaten resultieren konnten. Deswegen wurde eine zusätzliche Kontrollsoftware für die Microswitches von AECL installiert, die diesen 1-bit-Fehler bemerken konnte.

3 Monate später, im Dezember desselben Jahres, erlitt ein Patient während der Bestrahlung Verbrennungen an der Hüfte.
Auch in diesem Fall gesteht AECL den Fehler keineswegs ein.
Offiziell war die Ursache für die erneute Fehlfunktion unbekannt.
Der Patient hat diese Überdosis zwar überlebt, muß aber seitdem mit einer steifen Hüfte leben.

5.4 Fall 4: Texas, März 1986

Im März des folgenden Jahres sollte ein Patient mit einem Tumor im Rücken im Elektronenmodus mit 180rad bestrahlt werden.
Die Operatorin gab versehentlich ein "x" für "X-Rax" (Röntgenmodus) ein. Als sie dies bemerkt, änderte sie diese Eingabe schließlich zu "e" (Elektronenmodus). Weitere Parameter blieben unverändert. Da die Operatorin Ihren Fehler rechzeitig bemerkte, sollte das Gerät wie gewünscht im Elektronenmodus bestrahlen.
Während der Bestrahlung stoppte das Gerät mit der Fehlermeldung "Malfunction 54". Da dieser Fehler undokumentiert war, wurde die Behandlung fortgesetzt. Kurze Zeit später hielt das Gerät erneut an und zeigte diesmal die Meldung "UNDERDOSE" auf dem Terminal. Dennoch wurde die Behandlung fortgesetzt.
Ein Hilferuf des Patienten war leider vergeblich. Das Videodisplay war zum Zeitpunkt der Behandlung ausgesteckt, das Audiosystem defekt.
Genau zu dem Zeitpunkt, an dem die 2. Dosis kam, verlies die Patientin den Behandlungstisch.
Die geschätzte Überdosis bei diesem Vorfall betrug ca. 20000rad.
Nach 5 Monaten verstarb die Patientin wegen Komplikationen aufgrund der Überdosis.

5.5 Fall 5: Texas, April 1986

Einen Monat nach dem ersten Unglück in Texas sollte dort ein Patient mit Hautkrebs im Gesicht behandelt werden. Die vorgesehene Strahlenintensität betrug 180rad im Elektronenmodus.
Die Behandlung wurde von derselben Operatorin durchgeführt, und es trat genau derselbe Fehler wie bei der ersten Überdosis auf.
Die Operatorin hatte wieder nach Ihrer Eingabe die Parameter für die Behandlung geändert. Auch in diesem Fall waren letztendlich eigentlich die richtigen Parameter eingestellt.
Während der Behandlung hörte die Operatorin den Patienten schreien und brach die Bestrahlung ab.
20 Tage nach der Überdosis stirbt der Patient wegen Überbestrahlung des rechten Schläfenlappens.
Die geschätzte Überdosis betrug wieder ca. 20000rad.

6. Untersuchung der Texas-Fälle

Die Operatorin des Krankenhauses versuchte zusammen mit einem Physiker des Hauses das Problem eigenständig zu rekonstruieren, um den Fehler für die Überdosis analysieren zu können.
Beide kamen zu dem Ergebnis, dass die Ursache für die Fehlermeldung "MALFUNCTION 54" in der schnellen Eingabegeschwindigkeit der Behandlungs-Parameter lag.
Genau der gleiche Fehler konnte an einer Therac-20 rekonstruiert werden. Auch die "Hardware Interlocks" des Vorgänger-Gerätes konnte die Fehlfunktion nicht verhindern.

Als kurzfristige Lösung wurden aus den Keyboards die Tasten entfernt, mit denen man seine gemachten Eingaben wieder hätte ändern können.

6.1 Analyse des Systems

Als schließlich das System der Therac-25 näher untersucht wurde, wurden einige Schwachstellen, vor allem an der Software aufgedeckt.
Als Basis diente ein selbst-programmiertes Echtzeit-Betriebsystem "32K PDP 11/23". Dieses Betriebsystem unterstützte präemptives Scheduling von kritschen und nichtkritischen Tasks. Diese Tasks wurden nach einem bestimmten Algorithmus gewichtet und anschließend seriell ausgeführt.
Synchronisationsoperationen wurden nicht implementiert.

Die Software bestand aus 4 Hauptkomponenten:
  • gespeicherte Daten (Parameter für Gerät und Patienten)
  • Interrupt Handler
  • Kritische Tasks
  • Unkritische Tasks
Zu dieser Software waren keinerlei Dokumentationen verfügbar.
Außerdem wurden keine richtigen Tests der Software durchgeführt. Die durchgeführten Tests bezogen sich fast ausschließlich auf die Hardware.
Eine durchgeführter Risiko-Anaylse wurde 1983 ebenfalls ohne Software durchgeführt.

7. Der Texas-Bug

7.1 Softwareskizze

7.2 Pseudo-Code

      Datent:
              begin
                calculate table index
                repeat
                  fetch parameter
                  output parameter
                  point to next parameter
                until all parameter set
                call Magnet
                if mode/energy changed then return
              end
            if data entry is complete then set Tphase to 3
            if data entry is not complete then
              if reset command entered then set Tphase to 0
            return
            
      Magnet:
            Set bending magnet flag
            repeat
              set next magnet
              call Ptime
              if mode/energy has changed, then exit
            until all magnets are set
            return
            
      Ptime:
            repeat
              if bending magnet flag is set then
                if etiting taking place then
                  if mode/energy has changed then exit
            until histeresis delay has expired
            clear bending magnet flag
            return
      


7.3 Race conditions

Bei der Therac-25 gab es 2 nebenläufige Tasks. Einen nicht-kritischen "Keyboard task handler" und einen kritischen "Task treatment processor" (Treat).
Der "Keyboard task handler" ist unter Anderem für das Parsen der Texteingabe zuständig. Er kodiert das Ergebnis in einer 2 Byte großen gemeinsamen Variable. Außerdem setzt er das "Entry complete flag", welches das Ende der Eingabe signalisiert.

Der Treat-Task liest die kodierten Eingabedaten um die Parameter für die bevorstehende Behandlung zu erhalten.
Danach ruft er eine Routine auf, die die Magneten in die richtige Position bringen. Dieser Einstellvorgang dauert ungefährt 8 Sekunden.
Während die einzelnen Magneten eingestellt werden, wird eine Warteschleife initialisiert (Ptime). Diese ist solange aktiv , bis alle Magneten eingestellt sind. Außrdem soll in der Warteschleife übeprüft werden, ob zwischenzeitlich neue Eingaben vorgenommen wurden. In diesem Fall wird die Schleife beendet und die Gerätekonfiguration erneut gestartet (Treat springt von "Set Up Test" zurück zu "Datent").

7.4 Gewöhnlicher Einstellvorgang

Während der Eingabe der Behandlungsparameter kommuniziert die "Datent"-Routine (Data entry) über eine gemeinsame Variable ("Data entry complete") mit dem "Keyboard handler". Dieser bemerkt das Ende der Eingabe und setzt das "Data entry complete"-Flag. Ausschlaggebend dafür ist einzig und allein die Position des Cursors. Sobald sich der Cursor am rechten unteren Rand des Terminals ("Command:") befindet (siehe
Skizze), wird das Flag gesetzt.
Die Datent-Routine bemerkt diesen Statuswechsel und ändert die Tphase-Variable zu 3 ("Set Up test").
Änderungen können vorgenommen werden, wenn der Cursor wieder nach oben bewegt wird. Dies hat aber unter bestimmten Vorraussetzungen (wird gleich genauer erläutert) keinen Einfluß auf das "Data entry complete"-Flag.

7.5 Darstellung dieser "Race conditions"

Vor jeder Behandlung muß der Operator den gewünschten Modus (Röntgen-/Elektronenmodus) auswählen. Falls er den Elektronenmodus gewählt hat, muß er zusätzlich noch die Energie bestimmen. Diese Parameter können später aber separat wieder geändert werden. Wenn der "Keyboard handler" das "Data entry complete"-Flag setzt, bevor der Operator die Daten für Modus und Energy eingeben hat, werden weitere Änderungen nicht mehr bemerkt.

7.6 Ursache für Texas-Bug

Für MEOS (Mode/Energy Offset, siehe
Skizze) sind 2 nebenläufige Tasks zuständig. Deswegen können Inkonsistenzen auftreten, wenn diese beiden Tasks nicht ordnungsgemäß ablaufen (nebenläufige Tasks werden bei der verwendeten Software sequentiell ausgeführt). Die Software enthält selber keine weiteren Tests auf Konsistenz.
Wenn alle Parameter eingestellt sind, wird von "Datent" die Unterfunktion Magnet aufgerufen, die alle Magneten ausrichten soll. Dieser Vorgang dauert ca. 8 Sekunden. Beim ersten Aufruf von Magnet wird ein Flag ("bending magnet") intialisiert, welches wieder gelöscht werden soll, wenn alle Magneten eingestellt sind. Um die Zeitverzögerung von 8 Sekunden zu initialisieren, ruft "Magnet" eine Unterfunktion "Ptime" auf. Da mehrere Magneten eingestellt werden müssen, wird Ptime mehrmals aufgerufen. Am Ende von Ptime wird aber bereits beim ersten Durchlauf das "Bending magnet"-Flag gelöscht.
Ptime soll außerdem überprüfen, ob während des Einstellvorgangs (der Magneten) Benutzereingaben erfolgen. Dies wird aber nur solange überprüft, solange das "bending magnet"-Flag gesetzt ist (siehe Pseudo-Code).
Da aber beim ersten Durchlauf von Ptime bereits dieses Flag gelöscht wird, wird bei den weiteren Durchläufigen nicht mehr überprüft, ob Parameter geändert wurden.
Der Texas-Bug trat genau dann auf, wenn der Operator innerhalb von 8 Sekunden nach Änderung von Mode/Energy (in MEOS) auf die Kommadozeile geht (nun wird "Magnet" zum Einstellen der Magneten aufgerufen), und anschließend den Cursor wieder nach oben zu MEOS bewegt, und Änderungen der Energie oder des Modus vernimmt.
Die vorgenommenen Änderungen werden in diesem Fall zwar in der Maschine gespeichert, beim Einstellen des Gerätes aber nicht berücksichtigt. Deswegen kann es vorkommen, dass im Elektronenmodus (ohne Platte) die Energy für eine Röntgenbehandlung verwendet wird, was zu einer ca. 100fachen Überdosis führt.

7.7 Lösung für Texas-Bug

Die Lösung für den Texas-Bug ist denkbar einfach. Löscht man das "Bending magnet"-Flag am Ende von "Magnet" anstelle von "Ptime", so können innerhalb der 8 Sekunden zu jeden Zeitpunkt Änderungen der Parameter durch Ptime erkannt werden.



8. Der Washington-Bug

8.1 Fall 6: Yakima, Washington, Januar 1987 - 2. Fall

Im Januar 1987 kam es in Yakima im US-Bundesstaat Washington zu einer 2. Überdosis. Hierbei wurde die Brust eines Patienten verbrannt. Dieser verstarb 3 Monate später.
Diese Überdosis ist aber im Gegensatz zum ersten Unfall auf eine andere Ursache zurückzuführen:
den sogenannten "Washington Bug".

8.2 Darstellung des Washington-Bugs

Der Fehler des 2. Yakima-Unfalls tauchte nur unter ganz bestimmten Vorraussetzungen auf.
Um dies zu veranschaulichen, folgt eine kurze Beschreibung eines normalen Einstellvorgangs aus einer etwas anderen Perspektive als zuvor (siehe Kapitel:
"Gewöhlicher Einstellvorgang"): Zu Beginn stellt der Operator die gewünschten Parameter am Terminal ein. Dort erscheint neben den Parameter zuerst einmal "UNVERIFIED" (vgl. User-Interface). Anschließend kann der Operator noch Feineinstellungen am Gerät direkt vornehmen. Daraufhin wechselt der Status neben den Parametern von "UNVERIFIED" zu "VERIFIED".

Nun wird der Operator aufgefordert, "SET" zu drücken, damit sich das Gerät in die richtige Position bringen kann ("Set Up Test" wird aufgerufen). Bei jedem Aufruf von "Set Up Test" wird eine gemeinsame Variable "Class 3" inkrementiert. Diese Variable gibt an, ob die Position des Gerätes verifiziert wurde. Ist die Variable ungleich 0, so herrscht Inkonsistenz. Die Behandlung wird nicht fortgeführt. Wenn "Class 3" gesetzt wurde, wird noch eine weitere gemeinsame Variable überprüft: F$mal. Diese Variable signalisiert Fehlfunktionen im Gerät. Eine Fehlfunktion tritt genau dann auf, wenn F$mal ungleich 0 ist.
Wenn F$mal ungleich 0 ist, dann gibt es eine Fehlfunktion und "Set Up Test" wir erneut aufgerufen.

Während der Einstellung des Gerätes wird "Set-Up-Test" mehrere 100mal aufgerufen. Bei jedem Aufruf wird "Class 3" inkrementiert. "Class 3" ist eine 1 Byte große Variable.
Daraus folgt, dass wenn der Wert "Class 3" größer als 255 wird, kommt es zu einem Overflow, so daß "Class 3" nicht den Wert 256 sondern 0 annimmt. Das bedeutet, dass "Class 3" bei jedem 256. Aufruf von "Set Up Test" den Wert 0 annimmt, obwohl F$mal immer noch eine Fehlfunktion signalisiert.
Drückt der Operator genau zu diesem Zeitpunkt "SET", kommt es zu einer Überdosis, da sich das Gerät an einer falschen Stelle befindet.

8.3 Lösung für Washington-Bug

Die Lösung für den Washington-Bug ist ebenso einfach wie die für den Texas-Bug.
Wenn man bei jedem Aufruf von "Set Up Test" die Variable "Class 3" nicht inkrementiert, sondern ihr einen Wert ungleich 0 zuweist, dann kann Inkonsistenz signalisiert werden, ohne dass es zu einem Overflow kommt.


9 Fazit

Einige Unfälle hätten verhindert werden können, wenn sofort Untersuchungen der Vorfälle, insbesondere des Gerätes stattgefunden hätten. Da aber das Vertrauen aller Beteiligten immens groß war, wurde lange Zeit ein Fehler des Gerätes ausgeschlossen.

Außerdem muss der Sinn von Fehlermeldungen klar ersichtlich sein. Es reicht nicht aus, Fehlermeldungen zu implementieren. Wenn diese nicht verständlich dokumentiert sind, haben Sie keinen Sinn und können sogar mehr Schaden anrichten als verhindern.

Wenn man sich Gedanken über die Beseitigung des Problems (des Fehlers) macht, dann sollte man nicht auf Vermutungen basieren, sondern eine fundierte Analyse machen, um anschließend die Grundursache beheben zu können.

Eine andere Schwachstelle der Therac-25 war, dass nahezu alle Hardware-Überwachungskomponenten des Vorgängermodels entfernt und durch Software-Checks ersetzt wurden. Überwachungsmechanismen, die auf Hardware basieren, sind in der Regel deutlich stabiler als Software-Lösungen, da sich hier immer Fehler einschleichen können oder es zu besonderen "Race conditions" kommen kann.

Ein weiteres Risiko stellt das selbst implementierte Betriebsystem dar, da man noch keinerlei Erfahrung damit machen konnte und neben der Software auch das Betriebsystem bugfixen muss. Kommerzielle Lösungen von bekannten Herstellern sind in der Regel vernünftiger und vor allem deutlich länger getestet.

Beim Entwurf von Software muss sichergestellt sein, dass kritische Komponenten einfach gehalten werden und vernünftig getestet werden können.
In der Therac-25 wurden Software-Bausteine ihrer beiden Vorgängermodelle Therac-6 und Therac-20 verwendet. Diese wurden mit neuem Code ergänzt. Es ist klar, dass eine Verschmelzung von vorhandenem Code und Neuem zu unerwarteten Problemen führen kann.

Zuletzt sollte noch auf den Konflikt hingewiesen werden, der entsteht, wenn man ein möglichst benutzerfreundliches Interface gestalten möchte, dass so sicher wie möglich ist. Denn diese beiden Ziele sind in der Regel gegenläufig. Das bedeutet, dass oft Komfort auf Kosten der Sicherheit geht und Sicherheit auf Kosten der Benutzerfreundlichkeit.

9.1 Konsequenzen

Die Unglücke der Therac-25-Serie waren die ersten Unfälle in der Radiologie. Im Laufe der Vorfälle wurde das "Center for Devices and Radiological Health" (CDRH) eingeschaltet.
Da Softwareprozesse von kleinen Herstellern im Eigenbauverfahren selten ausgereift sind, gestaltet sich die Fehlersuche und Fehlerbeseitigung oft recht schwer.

Als Reaktion auf die Unfälle zwischen 1985 und 1987 wurden bei der FDA und bei CDRH weitreichende Reformen durchgeführt. Es wurde größere Aufmerksam auf die Entwicklung und das Testen von Software gelegt. Außerdem wurde die Freigabeprozedur für neue Geräte verschärft.


10. Sonstige Fehler

Am 19. September 1989 kam es in einem Krankenhaus in Washington DC zu einem Softwarefehler, der den Überlauf einer 2 Byte großen Variable zur Folge hatte. Dies führte zum Absturz eines wichtigen Notfallgerätes.

Bei einem anderen Fall wurde einer Frau aufgrund eines Softwarefehler eine falsche Diagnose gestellt, woraufhin die Frau durchdrehte. Sie brachte ihre Tochter um wollte anschließend sich selber und ihren Sohn umbringen.

Ein System zur Überwachung von Patienten hatte durch einen Fehler der Software Patienten verwechselt. Das Gerät wurde sofort zurückgerufen.

Während der Justierung eines Herzstrittmachers kam es zum Absturz der beteiligten Software.

Bei einem Gerät, dass für die Zuführung von Insulin zuständig ist, kam es zu Fehlern in der Regelungssoftware.

10.1 London Ambulance Service, 1992

1992 wurde im London das "Ambulance System" auf ein "Computer Aided Despatch" (CAD) umgestellt. Dieses System sollte Notrufe für Krankenwagen empfangen und daraufhin die Verteilung der Krankenwagen koordinieren.
Damit sollte die Verwaltung automatisiert werden.

Die verwendete Software war aber keineswegs ausgereift und nicht vollständig implementiert. Außerdem waren die verwendeten Komponenten nicht richtig aufeinander abgestimmt. Auf abschließende Tests wurde ebenfalls fast ganz verzichtet.

Während des Betriebes des neuen Systems kam es zu Problemen beim Datenaustausch. Das zuständige Personal war nicht ausreichend ausgebildet.
Die Fahrer der Krankenwagen sollten über Spracheingabe mit dem System kommunizieren; dies war zum Einen für die Fahrer ungewohnt, zum Anderen funktionierte das System nicht ausreichend.
Im Laufe der Umstellung wurden dem Personal neue Aufgaben zugeteilt. Alles sollte nun ohne Papier ablaufen.

Das System wurde 3 Tage lang mit einer Unterbrechung von 7 Tagen verwendet.
Nach massiven öffentlichen Beschwerden und großem Interesse der Medien wure das System stillgelegt.
Die entstandenen Kosten belaufen sich auf ca. 11 Millionen €.


Bei weiteren Fragen stehen wir gerne via
Email zur Verfügung.


- ENDE -

zum Anfang