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
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
|