-
Notifications
You must be signed in to change notification settings - Fork 60
Berühmte Softwarebugs
Quelle: Wikipedia
Da Speicherplatz am Anfang der Computerära teuer und somit knapp war, wurde bei Jahresangaben nur die Zehner und Einser gespeichert, d.h. das Jahr 1979 wurde beispielsweise als 79 gespeichert. Die Probleme fingen dann bei der Jahrtausendwende an. 2000 muss nach der oben genannten Regel als 00 gespeichert werden. Programme aus der damaligen Zeit würden jedoch 00 als 1900 interpretieren, was zu vielen Fehlern führen würde, z.B.
- Fehler beim Vergleichen von Jahreszahlen:
00 < 99=>2000 < 1999 - Fehler bei der Berechnung von Zeitangaben:
00 - 99 ≠ 1, weil1900 - 1999 = -99 - Fehler bei der Zinsberechnung
- ...
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.
Quelle: Kleine BUGs, große GAUs: Softwarefehler
Der als friedlich bekannte Inder Mahatma Gandhi ist im Spielefranchise Civilization dafür bekannt,
besonders gerne nukleare Waffen zu nutzen.
Diese Affinität ist einen Programmierfehler im ersten Teil zuzuordnen, in welchem der Agressionswert bestimmt, wie wahrscheinlich es ist, dass der Herrscher eine atomare Waffe benutzt.
Gandhi startet dort mit einem Aggressionswert von 1, jedoch bekommt jede Demokratie bei Spielstart -2 Aggresionspunkte, was zu einem Wert von -1 führt. Binär betrachtet entspricht das folgender 8 Bit Zahl:
1111 1111
Dieser Wert wird intern aber als ein unsigned char, also wie eine 8 Bit vorzeichenlosen Ganzzahl behandelt.
Dies führt dazu, dass nicht eine -1 gelesen wird, sondern der Maximalwert dieses Datentyps 255.
Quelle: Atombombe von Gandhi
Der Therac-25 der Firma Atomic Energy of Canada Limited ist ein Linearbeschleuniger, der Röntgenstrahlen mit 25 MeV oder Elektronenstrahlen zur Behandlung von Tumoren erzeugen konnte. Er wurde von 1985 bis 1987 eingesetzt. In der Therac-Serie war der Therac-25 das erste Modell, bei dem die Konfiguration des Beschleunigers komplett an einem Computer und nicht mehr am Gerät erfolgte. Außerdem wurde auf hardwarebasierte Sicherheitssysteme verzichtet.
Im Röntgenmodus muss für die Erzeugung der Röntgenstrahlung zusätzlich eine Bleiplatte in den Strahlengang eingeführt werden, für eine optimale Ausbeute muss die einstrahlende Intensität ca. 100 mal höher sein. Befand sich diese Bleiplatte nicht im Strahlengang, konnte die Strahlenüberdosis bis zum Tod führen. Insgesamt kam es zu 6 Unfällen in Folge von Softwarebugs und menschlichem Fehlverhalten. Unter anderem wurden bei Komplettierung der Behandlungseinstellungen am PC eventuelle Korrekturen bei Fehleingaben nicht registriert, da zwischen den einzelnen Subroutinen eine Race-Condition eintreten konnte.
Weiterhin wird für Fehler in der Konfiguration eine 8bit-Variable inkrementiert. Kommt es zu einem Overflow, ist der Wert der Variable gleich 0 und es wird kein Fehler registriert.
Quellen: Hauptseminar Prof. Huckle - Therac-25 (TU München), Pfeifer, Martin. Berühmt berüchtigte Softwarefehler. Therac-25.
Rundungsfehler gehören zu den wohl häufigsten Bugs in der Softwareentwicklung. Selbst weltberühmte Software wie das Windows OS ist vor solchen Fehlern nicht sicher. Fehlerhaft waren hier die aus der Operation des Wurzel-Ziehens resultierenden Floats, die in weiteren Berechnungen aufgrund des auftretenden Rundungsfehlers nicht die zu erwartenden Ergebnisse lieferten.
Leider lässt sich der Bug auf aktuellen Windows-Versionen nicht mehr reproduzieren, aber wer ein älteres System besitzt sollte den Bug schnell nachvollziehen können.
Quelle: Famous Bugs
Die Wall-Street-Firma Knight Capital setzte 2012 durch den Einsatz einer neuen Handels-Software in Rekordzeit die eigene Existenz aufs Spiel.
45 Minuten ließ Knight Capital eine neue Computersoftware mit Aktien zocken. Danach war die Aktienhandels-Firma um 440 Millionen US-Dollar (359 Millionen Euro) ärmer. Das Geld gehört jetzt anderen Leuten, Knight Capital kämpft ums Überleben. 440 Millionen Dollar sind deutlich mehr, als der im jüngsten Quartal erzielte Umsatz von 289 Millionen Dollar. Der Vorfall wird in den USA in Anspielung an eine Horrorfilm-Reihe als "Knightmare on Wall Street" (Nightmare = Alptraum, Anm.) bezeichnet.
Bei dem umstrittenen hochfrequenten Handel (High Frequency Trading) werden Wertpapiere in extrem schneller Folge ge- und wieder verkauft. Das Tempo kann nur von automatischen Systemen gehalten werden. Ein solches neues, fehlerhaftes System ist laut Knight Capital an dem Debakel schuld. Der neue Algorithmus soll tausende Aufträge in die Handelssysteme der New Yorker Börse NYSE eingespeist haben, die weit vom ansonsten herrschenden Marktpreis abwichen. Etwa 150 Papiere sollen betroffen gewesen sein.
Quelle: heise online
Der Erstflug der europäischen Schwerlast-Trägerrakete Ariane 5 am 4. Juni 1996 endete etwa 40 Sekunden nach seinem Start. Die vier Cluster-Forschungssatelliten, mit denen das Erdmagnetfeld auf kurze räumliche und zeitliche Veränderungen dreidimensional untersucht werden sollte, explodierten mit dem Rest der Rakete. Schuld daran war ein Fehler in einem Softwaremodul der inertialen Navigationssysteme(INS) der Steuerungseinheit, bei dem wie im Ghandibeispiel ein Zählerüberlauf stattfand. Die Software war unverändert und ohne Systemtests vom Vorgängermodell übernommen worden. 36 Sekunden nach Raketenstart lieferten die INS nach vollständigem Ausfall der Lenk- und Lagefunktionen nunmehr Diagnoseinformationen an den Flugcomputer. Der fasste diese jedoch als Flugdaten auf und korrigierte fälschlicherweise die Flugbahn mit einer Abweichung von mehr als 30° zur tatsächlichen Flugbahn. Aufgrund der hohen aerodynamischen Kräfte kam es in etwa 4000m Höhe zu dem etwa 290 Mio.€ teuren Fehler.
Die Codezeile, die zum Fehler führte, lautete wie folgt:
P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH)))
Quelle: Wikipedia
Am 15. Januar 1990 konnten 70 Millionen von 138 Millionen Ferngesprächen innerhalb der USA neun Stunden lang nicht vermittelt werden. Der Schaden bei AT&T wurde auf 75 Millionen US-Doller geschätzt, ohne Folgeschäden einzubeziehen. Auslöser dieser Kettenreaktion war der Reset-Modus der New Yorker Schaltzentrale nach einer Fehlfunktion. Diese wiederum war durch einen falsch gesetzten break in der Fehlerbehandlungsroutine bedingt, der durch ein Softwareupdate vier Wochen zuvor in das gesamte System aufgenommen wurde. Er blieb in der Testroutine unerkannt, da die Break-Anweisung innerhalb einer If-Anweisung ausgeführt werden sollte, deren Bedingung während des Testens jedoch nie erfüllt war.
Quellen: Universität Koblenz, t-online
