-
Notifications
You must be signed in to change notification settings - Fork 60
Berühmte Softwarebugs
Integrieren Sie hier Ihren Text in "schönstem Markdown" :-)
Quelle: Wikipedia
Da Speicherplatz am Anfang der Coputerä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 gab es keine hardwarebasierten Sicherheitssysteme.
Im Röntgenmodus muss zusätzlich eine Bleiplatte in den Strahlengang eingeführt werden, für eine optimale Ausbeute muss die einstrahlende Energie 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
