Kleine BUGs, große GAUs

Softwarefehler und ihre Folgen

Prof. Thomas Huckle
Institut für Informatik
TU München
huckle@in.tum.de

Vortrag am 2.12.1999



Siehe auch: http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html





1. Murphy's Laws

Nach dem Auseinanderbauen und Zusammenbauen
irgendeiner Vorrichtung bleiben immer einige
Teile übrig.
...
Wenn irgendein Teil einer Maschine falsch eingebaut
werden kann, so wird sich immer jemand finden, der
das auch tut.
...
Bei einer beliebigen Berechnung wird die Zahl, deren
Richtigkeit für alle offensichtlich ist, zur Fehlerquelle.
...



2. Explosion der Ariane 5

Am 4. Juni 1996 startete die ESA eine unbemannte Rakete
mit vier Satelliten an Bord von Französisch Guyana aus.
40 Sekunden nach dem Start explodierte die Ariane 5.
Verlust ca. 500 Millionen Dollar für Rakete und Satelliten.
Entwicklungskosten ca. 7 Milliarden Dollar.

Ursache für den Absturz:
Der Bordcomputer stürzte 36.7 Sek. nach dem Start ab
als er versuchte, den Wert der horizont. Geschwindigkeit
von 64 Bit Gleitkommadarstellung in 16 Bit signed Integer
umzuwandeln: -+ b1 b2 ... b15.
Die entsprechende Zahl war grösser als 2^{15}=32768 und
erzeugte einen Overflow.
Das Lenksystem brach zusammen und gab die Kontrolle
an eine zweite, identische Einheit ab.
Selbstzerstörung wurde ausgelöst, da die Triebwerke
abzubrechen drohten.

Bemerkungen:
(1) Die Software stammte von der Ariane 4, aber
die Ariane 5 flog schneller!
(2) Die Software war für den eigentlichen Flug überflüssig
und diente nur den Startvorbereitungen.
Um einen möglichen Restart im Falle einer kurzen
Unterbrechung des Countdowns zu ermöglichen, blieb
das Programm 40 Sek. lang während des Flugs aktiv.
(3) Der Backup-Rechner verwendete exakt
das gleiche Programm.
(4) Die Umwandlung war nicht abgesichert, da man
glaubte, dass die Zahl nie so gross sein könnte.



2. Pentium Prozessor Divisions-Fehler 1994

Beispiel:
x = 4195835.0
y = 3145727.0
z = x - (x/y) * y
Bei exakter Rechnung und fehlerfreiem Prozessor: 0
Pentium liefert als Ergebnis: 256

Ursache:
INTEL verwendet speziellen Divisions-Algorithmus
Radix-4 SRT Algorithmus:
1. Sammle signifikanten Stellen in Divisor und Dividend
2. Aus Tabelle lese eine Schätzung für die nächste Stelle
des Quotienten.
.....
.....

Vorteil: 2 Bits des Quotienten pro Takt
Tabelle sollte 1066 Einträge haben.
Durch fehlerhafte FOR-Schleife wurden nur 1061 geladen
und in den Chip aufgenommen.

Auswirkungen:
Einige falsche Ergebnisse bei Gleitpunkt-Division:
- An vierter Dezimalstelle
Häufigkeit bei normalem Benutzer:
- Alle 27000 Jahre einmal (laut INTEL)
- Alle 24 Tage einmal (laut IBM)}
Verlust für INTEL: >400 Millionen Dollar.

Genaue Beschreibung:
http://www.intel.com/procs/support/pentium/fdiv/



3. Patriot-Raketen-Fehler

Während des Golfkriegs verfehlte am 25.2.1991
in Saudiarabien eine amerikanische Patriot-Rakete
eine irakische Scud-Rakete.
Die Scud-Rakete traf eine Kaserne und tötete 28 Soldaten.

Ursache:
Ungenaue Berechnung der Zeit seit Systemstart
wegen Rundungsfehler.
Interne Uhr in zehntel Sekunden. Umrechnung:
Verstrichene Zeit mit 1/10 multipliziert, um die
verstrichene Zeit in Sek. zu berechnen. Dabei ist

1/10 = 2^{-4}+2^{-5}+2^{-8}+2^{-9}+2^{-12}+2^{-13}+...

Als Festkommazahl mit 24 Stellen also

0.00011001100110011001100

Rundungsfehler:

2^{-25}+2^{-26}+... approx 0.000000095=9.5*10^{-8}


Effekt:
Nach 100 Betriebsstunden 100*60*60*10=3.6*10^6
ergibt sich als Fehler (Zeitdifferenz)

9.5*10^{-8}*3.6*10^6=0.34 Sekunden

Scud-Geschwindigkeit 1.676 km/s=6034 km/h
Scud in der Zeit ca. 0.57 km weiter.
Damit ausserhalb der Reichweite des ``Aufspürsystems''
der Patriot.



4. Eisenbahn-Stellwerk Altona

1995 soll altes Stellwerk Altona mit 50 Angestellten
ersetzt werden durch INTEL-486 Echt-Zeit-System.
Vorteil: Nur noch 10 Personen nötig zum Betrieb.
Nach Inbetriebnahme am 13.3.95 Absturz des Rechners.
Schliessen des Stellwerks erzeugte Verkehrschaos
mit Auswirkungen im gesamten Bundesbahnverkehr.

Ursache:
Bei starkem Zugverkehr versucht das System
einen Kellerspeicher (Stack) mit 4 kBytes
im RAM-Speicher anzulegen.
Benötigt und vorhanden waren eigentlich nur 3.5 kByte
aber nicht 4 kByte.
500 Byte mehr aus 'Sicherheitsgründen'!

Auswirkungen:
Keine manuelle Ersatzsteuerung möglich!
Reparatur durch Hersteller Siemens nach einigen Tagen
durch Hinzufügen von 0.5 Mega-Byte.
Auch danach noch Behinderungen bis
die Angestellten das System beherrschten.



5. Verlust des Mars Climate Orbiters

Start des Mars Climate Orbiters der NASA am 11.12.98
Ziele:
Erreichen einer Mars-Umlaufbahn
Unterstützung des Mars Polar Lander (Start 3.1.99)
- (MPL sammelt Daten von der Oberfläche)
Kartographierung der gesamten Oberfläche
während eines ganzen Jahres (687 Tage)
Danach noch drei Jahre aktiv für
ev. weitere Mars-Landungen

Der Verlust und seine Ursachen:
Angesteurte Umlaufbahn am 23.9.99:
170 km tiefer als geplant.
Absturz oder Abprall!
Grund:
Zwei Gruppen der NASA sind am Projekt beteiligt.
Eine rechnet in Meter, die andere in Inch, Fuss ...
Falsche Steueranweisung - Falsche Bahn - Verlust
Mars Polar Lander soll am 3.12.99 landen?

"The 'root cause' ... was the failed translation of English units
into metric units in a segment of ground-based, navigation-related
mission software,..."



6. Fehler bei Sojourner

Mars-Auto Pathfinder arbeitete erfogreich 1997,
bis auf einen 'kleinen' Fehler:
Aus unerfindlichen Gründen bootete der Bordcomputer
und führte manchmal einen System-Neustart durch.
Verlust der gesammelten, noch nicht gespeicherten Daten.
Ursache war die Organisation der Datenkommunikation
bei mehreren Anforderungen verschiedener Priorität:
'Prioritätsumkehr'

Beschreibung:
Informations-Bus als Shared-Memory-Bereich zur
Datenübertragung zwischen verschiedenen Komponenten
(H) ist Bus-Management-Task zum Datentransport.
- Höchste Priorität, häufig.
(N) ist Eintrag von meteorologischen Daten
- Niedere Priorität, selten, kurz,
- aber Ausführung von (N) blockiert (H)
(M) ist Kommunikations-Task. Mittlere Priorität, lang.
- (M) bekommt Vorzug vor (N), da höhere Priorität.

Prioritätsumkehr in folgender Situation:
(N) wird ausgeführt;
(H) will arbeiten, wartet aber auf Ende von (N);
(M) tritt auf, unterbricht (N), (H) weiter blockiert.
Ein 'watchdog' bemerkt nach einiger Zeit, dass (H) nicht
ausgeführt wird und befiehlt Neustart des Systems.



7. Das Denver-Koffer-Debakel

Bei der Neueröffnung des Flughafens in Denver sollte
voll automatisches Gepäcksystem verwendet werden.
300 Computer, Laserscanner, Photozellen, Ethernet-Netzwerk.
Eröffnung des Flughafens wegen Fehler im Gepäcksystem
um 16 Monate verspätet.
Zerquetschte, verlorene Koffer usw.
Wieder Gepäck-Sortierung per Hand nötig.
Verlust: ca. 3.2 Milliarden Dollar.

Teilursache:
Zu viele Nachrichten über Ethernet.
Sortier-Anweisungen kamen nicht rechtzeitig
wegen Überlastung des Netzwerks (LAN).
Gesamtproblem zu komplex.



8. NASA Venus-Erkundung

Venus Mariner 1 geht 1962 unterwegs verloren.
Grund: Fehler in FORTRAN-Code.
Ein Bindestrich fehlte an einer Stelle im Programmtext.
'Mit 80 Millionen Dollar der teuerste Bindestrich
in der Geschichte der Menschheit.'
Andere Version: in FOR-Schleife statt Komma ein Punkt.



9. Euro-Umrechnung

Beispiel Umrechnung von BEF in EURO:
Konversionsfaktor 6-ziffrig, 1 EUR = 39.5225 BEF
Umrechnung:
0.01 EUR --> 0.395225 BEF ---> 0 BEF
mit Fehler von 100% .

Totalisierungsfehler: Dasselbe 100 mal.
Erst 100 mal, dann Umwandlung ergibt 39.52 BEF.
Erst Umwandlung, dann 100 mal ergibt 0 BEF.



10. Bank-Bugs

Bank of America hat im Februar 1988 Hardwareprobleme
Dadurch Verlust von mehreren Milliarden Dollar
auf Sparkonten.
Zwar wiedergefunden, aber:
Kunden weg, Abteilung entlassen!


US Federal Reserve System (Zentralbank):
Neues Computersystem überweist nach Inbetriebnahme
28 Milliarden Dollar an falsche Banken.
Zurück kamen nur 24 Milliarden!



11. Verschiedene Bugs


Y2K, Millenium-Bug, Schaltjahr/Feiertag-probleme

Tonanlage im Bundestag, Dezember 1992

Wahlen in Scheswig Holstein 1992: Grüne 4.97% --> 5.0%

Therac-25: Fehlerhaftes Bestrahlungsgeraet

London Milleniumbridge: Schwingungen

Schubumkehr bei Böing/Airbus: Unbekannter Fehler!
Zur Vermeidung: Schubumkehr nur, falls Räder drehen! --> Warschau

Börsencrash Wall Street 19. Oktober 1987: Beschleunigung

Westpac Bank, Australien: Umstellen auf Computer

DMV, Kalifornien: Neues Computersystem

Bayer. Oberlandbahn: Elektronikfehler (Heizung,Türen)

Airbusabschuss während des Iran-Konflikts: Pattern recognition

USS Yorktown: Eingabe von '0' legt Schlachtschiff lahm.

Neuronales Netz: Panzererkennung (Legende?)

Radio-Strahlungsdaten fehlerhaft gerundet.

ROSAT-Daten falsch berechnet

Clementine Mondsonde ('94): Asteroid Geographos

Sturm Lothar: Falsche Wettervorhersage

Nicht Erkennen des Ozonloches: Fehlinterpretation der Messdaten



12. Tacoma - Sleipner A

1940 gebaute Tacoma-Brücke, USA, Washington
Durch Fallwinde: Torsions-Schwingungen, Einsturz
Ausgangspunkt für Notwendigkeit
numerischer Berechnungen


1991 gebaute Ölplattform Sleipner A wurde
vorher durchgerechnet mittels NASTRAN,
ein populäres Finite-Element-Programm.
Aber die auftretenden Scherungskräfte
wurden um 47% unterschätzt.



13. Bugs allgemein


Laut INTEL: in Pentium 80-90 Bugs,
genauso viel wie bei Vorgängern.

Normale Software: 25 Fehler pro 1000 Programmzeilen.
Gute Software: 2 Fehler pro 1000 Zeilen.
Space Shuttle Software: < 1 Fehler pro 10000 Zeilen.

Beispiel Handy:
200 000 Zeilen Programm: bis zu 600 Fehlern.

Windows-95 hat 10 Mill. Zeilen: bis zu 20 000 Fehler.

Bananen Software: Lass die Software beim Kunden reifen!
'It's not a bug, it's a feature'

SDI-Programm!


Ursachen von Software-Bugs

- Offensichtliche Fehler (Tippfehler, Entwurfsfehler...)
- Fehlende Sicherheitsabfragen (unvorhergesehene Faelle treten auf)
- Schnittstellenfehler (Programmteile passen nicht zusammen)
- Fehlinterpretation in den Ein/Ausgabe-Daten
- Ungepruefte Wiederverwendung alten Codes
- Software und Hardware passen nicht mehr zusammen
- Computerentwicklung wesentlich schneller als Entwicklung der restlichen Technologie
- Numerische Rundungsfehler
- Nicht ausreichende Tests
- Gigantismus
- Unterschaetzen der Aufgabenstellung



14. Eisenbahn-Bug (kein Computer-Bug)
Nach Wiedervereinigung soll Strecke Eichenberg - Arenshausen
(zwischen Kassel und Erfurt) zweigleisig
wiederhergestellt werden.
Von Hessen und von Thüringen aus gebaut.
Beide Bautrupps bauen das 'rechte' Gleis!



Weitere Stichworte:
GPS, Vancouver Stock Market, Swiss Air Entertainment Computer, Adidas Shoe Distribution System, Pizza Delivery Service, Therac-25, London Ambulance System, Taurus London Stock Exchange, E-Mail Buffer Overflow, IRS Georgia tax refund, Intuit tax, Computer Aided Vehicle Dispatching, Lion King CD. Deregulation of California Power Industry, AT&T long distance service, Falkland Exocet.

Siehe auch: http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html


15. Relevante Internet-Adressen:


NASA Marsprogramm (Mars Climate Orbiter):
http://mars.jpl.nasa.gov/msp98/news/mco991022.html
http://mars.jpl.nasa.gov/msp98/news/mco991110.html
http://www.space.com/news/spacestation/zvezda_goldin_101499.html fuer Raumstation / Space Shuttle.

MASA Mond Programm (Clementine):
http://nssdc.gsfc.nasa.gov/planetary/lunar/clementine1.html
http://nssdc.gsfc.nasa.gov/planetary/clementine.html

Denver Flughafen:
http://www.controlnet.org/cnet/PRESENTATIONS/CN-CARO/sld016.htm
http://www.csc.calpoly.edu/~dstearns/SchlohProject/

Pentium:
http://www.intel.com/procs/support/pentium/fdiv/white11/index.htm

Ariane 5:
http://www.esrin.esa.it/htdocs/tidc/Press/Press96/ariane5rep.html
http://www.around.com/ariane.html

Mars Sojourner:
Risks-Digest
http://mpfwww.jpl.nasa.gov/MPF/default.html

Patriot-Scud:
http://www.math.psu.edu/dna/disasters/patriot.html
http://www.britishheritage.com/picture/0117.htm

Tacoma-Brücke:
http://cee.carleton.ca/Exhibits/Tacoma_Narrows/
http://www.wsdot.wa.gov/eesc/environmental/Bridge-WA-99.htm
http://www.me.utexas.edu/~uer/papers/paper_jk.html

Sleipner:
http://www.math.psu.edu/dna/disasters/sleipner.html

Wall Street Crash:
http://www.facts.com/cd/v00066.htm

Flugzeugabstürze:
http://dnausers.d-n-a.net/dnetGOjg/Disasters.htm
http://airsafe.com/

Euro:
http://www.euro-emu.co.uk/offdocs/ Paper Nr.22
http://freeusers.digibel.be/~gedesmet/euro/europrie.htm
http://www.eurotype.com/pressay1.htm

Banken:
http://www.wsrcg.com/trenches.htm
Risks-Digest

Radiostrahlen-Rundungsfehler:
http://info.aoc.nrao.edu/doc/vla/html/setjy.shtml

ROSAT-Fehler:
http://heasarc.gsfc.nasa.gov/mail_archive/rosnews/maillist.html
http://heasarc.gsfc.nasa.gov/mail_archive/rosnews/msg00111.html

NASDAQ Index Update
http://www.jammed.com/Lists/IWAR/1998-Oct/IWAR-807

Therac-25:
http://wings.buffalo.edu/law/Complaw/CompLawPapers/szymczak.html



Allgemein:

Collection of Software Bugs:
http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html

Risks Digest: http://catless.ncl.ac.uk/Risks/
z.B. Soujourner, Altona, Schubumkehr, Tonsystem Bundestag, Banken, DMV,
Neural Net, SDI
http://www.egroups.com/group/risks--uga.cc.uga.edu/
Newsgroup comp.risks

http://www.math.psu.edu/dna/disasters/
für Sleipner-Plattform, Ariane 5, Patriot

http://www.eee.bham.ac.uk/dsvp_gr/roxby/ee4a3/Lecture2/index.htm
für Denver, Clementine, Intel Pentium

http://www.singapore.cnet.com/Briefs/Guidebook/Bugs2/index.html
http://www.cnet.com/Content/Features/Dlife/Bugs/?tag=st.cn.sr3.dir.
für Mariner 1, Patriot, Pentium, Denver, Y2K, ...

http://www.bugnet.com/
für Y2K, Windows 98

http://www.wsrcg.com/trenches.htm
Banken, Airbusabschuss, DMV

http://infotech.fanshawec.on.ca/gsantor/Computing/FamousBugs.htm
USS Yorktown

Calculemus, H. Klaeren:
http://www-pu.informatik.uni-tuebingen.de/users/klaeren/herakles/herakles.html

What is Rounding error, Pete Stewart:
ftp://thales.cs.umd.edu/pub/misc roundtalk.ps

http:///www-aix.gsi.de/~giese/swr/
Software allg., Mariner 1, AT&T, Therac-25, Voyager 2, Gemini, Apollo, Space Shuttle, Eole, Phobos, SDI, Exocet, F-16, Flugzeuge, NORAD, neuer Planet 1991, Notrufsystem, Banken, Vancouver, ... Literatur

http://www.softwareqatest.com/qatfaq1.html
Russisches Fruehwarnsystem 1983, Telephon, Banken, Software allg.

http://www-courses.cs.uiuc.edu/~cs376/horror.html
Software Horror Stories: Airbus, London Ambulance, Exocet, Space Shuttle, NORAD,...

http://www.byte.com/art/9509/sec7/art20.htm
BYTE: SDI, Therac-25, Wall Street,...

http://www.qucis.queensu.ca/Software-Engineering/archive/horror
Vancouver, BART, Wetter, ...

http://userpage.fu-berlin.de/~dittbern/Archiv/PC_and_Railways.html#Berlin_4
Eisenbahn

http://www.cantrip.org/nobugs.html
Bill Gates: No Bugs



Prof. Dr. Thomas Huckle, huckle@in.tum.de