Gehen Sie mit der App Player FM offline!
STP037: Berühmte Softwarefehler
Manage episode 362447392 series 2920733
Wir alle machen Fehler. So gut, so trivial. Wenn allerdings Elektronenrechner im Spiel sind, kann das durchaus kritisch werden. In manchen Fällen sogar tödlich.
Shownotes
Errata zu STP034 von Thomas aus Berlin:Am Ende der Folge wundert sich ttimeless darüber, warum
sin(pi)
auf dem Taschenrechner immer ein Ergebnis von 0,0548... produziert. Du versuchst, das dann mit möglichen Ungenauigkeiten der Abbildung von pi zu erklären.Ich glaube, die Antwort ist viel einfacher: In der normalen Einstellung DEG erwartet der Taschenrechner die Eingabe in Grad und
sin(pi°) = 0,0548...
ist damit auch korrekt. Stellt man den Taschenrechner auf RAD (Radiant), dann rechnet der Taschenrechner auch korrektsin(pi) = 0
.
"Off by One" ("um eins daneben")
- Diese Folge ist Nr. 37 und somit die 38. Folge dieses Podcasts!
- häufige Konvention in der IT: Nummerierung fängt bei Null an
- In einer Liste mit 10 Elementen das vorderste den Index 0 und das hinterste den Index 9.
- formal plausibel, da Null die erste natürliche Zahl ist (ansonsten ist ℕ unter Addition keine Gruppe; siehe EWD831)
- technisch plausibel, da die Speicheradresse einer Liste für gewöhnlich die Speicheradresse des vordersten Elementes ist; dieses hat also einen Abstand von 0 zum Beginn der Liste
- siehe auch Zaunpfahlfehler
- Thema heute: Wie katastrophal können die Auswirkungen solcher kleinen Fehler sein?
mechanische Fehler: "First actual case of bug being found."
Überlauf: Ariane-Flug V88 (1996)
- erster Flug der Ariane 5
- Steuerungssoftware war von der Ariane 4 übernommen und nicht auf derart große Horizontalgeschwindigkeiten ausgelegt
- Überlauf bei Konvertierung von float64 in int16; aber bei dieser konkreten Variable keine Überlaufprüfung wegen Ressourcenknappheit
- größeres Motiv laut Untersuchungsbericht: in der Gefahrenabschätzung wurde nicht hinreichend berücksichtigt, dass die Software (und nicht nur die Hardware) fehlerhaft sein könnte
- Folge: erster großflächiger Einsatz von Fehlersuche mittels statischer Code-Analyse
Überlauf: Y2K Bug -> siehe STP016
Überlauf: Heartbleed (2014)
Drift: Dhahran Missile Incident (1991), siehe auch
- Hintergrund: 28 Amerikaner getötet durch Raketenbeschuss auf eine US-Basis in Saudi Arabien während des 1. Golfkriegs
- Fehler im Raketenabwehrsystem: aufgrund Rundungsfehler driftet die interne Uhr um einen Faktor von 0,00000095
- nach 100 Stunden Dauerbetrieb ist die Drift bei 0,34 Sekunden; entspricht bei Raketen mit Mach 4 einer Distanz von etwa 500 Metern
Spezifikation falsch gelesen (oder Kommunikationsproblem): Mars Climate Orbiter (1999)
- NASA hatte metrische Einheiten verwendet (Impuls in Newtonsekunden), die Navigationssoftware von Lockheed Martin hingegen imperiale Einheiten (Impuls in Pound-Force-Sekunden)
Clusterfuck: Therac-25 (1985-1987), unter anderem:
verteiltesverstreutes System: fehlerhafte Synchronisation zwischen einem Messprozess und einem parallel arbeitenden Steuerprozess- Benutzerführung: in bestimmten Situationen wurde nach der Eingabe neuer Daten der alte Datensatz weiterverwendet, obwohl die Benutzeroberfläche den neuen Datensatz anzeigte
- Überlauf: 8-Bit-Flag für die Anzeige der Notwendigkeit einer Sicherheitsprüfung konnte von 255 auf 0 überlaufen und dadurch die Prüfung überspringen
überfordert von Komplexität: Corrupted Blood (2005)
- vor COVID-19 eines der wichtigsten Studienobjekte für das Verbreitungsmuster einer Pandemie, inklusive Tiervektoren und asymptomatisch infektiösen Patienten
- ein bestimmter Bosskampf in "World of Warcraft" versieht Spielercharaktere mit einem negativen Statuseffekt, der sie langsam tötet und der auf naheliegende Charaktere ansteckend wirkt
- Spieler sollten mit diesem Statuseffekt den Bosskampf nicht verlassen können, aber die Reittiere der Spieler konnten es!
analog zu Copy-Paste-Fehler: Mariner 1 (1962)
- Programmcode wurde auf Papier geschrieben, dort wurde fehlerhafterweise mit "R" statt mit dem korrekten "R̅" (R mit Überstrich) gerechnet
Copy-Paste-Fehler: Pentium-FDIV-Bug
- Division von Fließkommazahlen (siehe STP009) beim Pentium verwendet einen Algorithmus, der zur Beschleunigung eine Tabelle von vorberechneten Werten verwendet
- fünf Einträge in dieser Tabelle wurden nicht richtig in das finale Chip-Design übernommen
- Ergebnis: bestimmte Divisionen liegen um einen Bruchteil eines ‰ daneben
- Rückrufaktion im Wert von über 400 Millionen $
- "Wie viele Intel-Mitarbeiter braucht man, um eine Glühbirne zu wechseln? 1,9999983256"
- im Gespräch erwähnt: Fast Inverse Square Root
66 Episoden
Manage episode 362447392 series 2920733
Wir alle machen Fehler. So gut, so trivial. Wenn allerdings Elektronenrechner im Spiel sind, kann das durchaus kritisch werden. In manchen Fällen sogar tödlich.
Shownotes
Errata zu STP034 von Thomas aus Berlin:Am Ende der Folge wundert sich ttimeless darüber, warum
sin(pi)
auf dem Taschenrechner immer ein Ergebnis von 0,0548... produziert. Du versuchst, das dann mit möglichen Ungenauigkeiten der Abbildung von pi zu erklären.Ich glaube, die Antwort ist viel einfacher: In der normalen Einstellung DEG erwartet der Taschenrechner die Eingabe in Grad und
sin(pi°) = 0,0548...
ist damit auch korrekt. Stellt man den Taschenrechner auf RAD (Radiant), dann rechnet der Taschenrechner auch korrektsin(pi) = 0
.
"Off by One" ("um eins daneben")
- Diese Folge ist Nr. 37 und somit die 38. Folge dieses Podcasts!
- häufige Konvention in der IT: Nummerierung fängt bei Null an
- In einer Liste mit 10 Elementen das vorderste den Index 0 und das hinterste den Index 9.
- formal plausibel, da Null die erste natürliche Zahl ist (ansonsten ist ℕ unter Addition keine Gruppe; siehe EWD831)
- technisch plausibel, da die Speicheradresse einer Liste für gewöhnlich die Speicheradresse des vordersten Elementes ist; dieses hat also einen Abstand von 0 zum Beginn der Liste
- siehe auch Zaunpfahlfehler
- Thema heute: Wie katastrophal können die Auswirkungen solcher kleinen Fehler sein?
mechanische Fehler: "First actual case of bug being found."
Überlauf: Ariane-Flug V88 (1996)
- erster Flug der Ariane 5
- Steuerungssoftware war von der Ariane 4 übernommen und nicht auf derart große Horizontalgeschwindigkeiten ausgelegt
- Überlauf bei Konvertierung von float64 in int16; aber bei dieser konkreten Variable keine Überlaufprüfung wegen Ressourcenknappheit
- größeres Motiv laut Untersuchungsbericht: in der Gefahrenabschätzung wurde nicht hinreichend berücksichtigt, dass die Software (und nicht nur die Hardware) fehlerhaft sein könnte
- Folge: erster großflächiger Einsatz von Fehlersuche mittels statischer Code-Analyse
Überlauf: Y2K Bug -> siehe STP016
Überlauf: Heartbleed (2014)
Drift: Dhahran Missile Incident (1991), siehe auch
- Hintergrund: 28 Amerikaner getötet durch Raketenbeschuss auf eine US-Basis in Saudi Arabien während des 1. Golfkriegs
- Fehler im Raketenabwehrsystem: aufgrund Rundungsfehler driftet die interne Uhr um einen Faktor von 0,00000095
- nach 100 Stunden Dauerbetrieb ist die Drift bei 0,34 Sekunden; entspricht bei Raketen mit Mach 4 einer Distanz von etwa 500 Metern
Spezifikation falsch gelesen (oder Kommunikationsproblem): Mars Climate Orbiter (1999)
- NASA hatte metrische Einheiten verwendet (Impuls in Newtonsekunden), die Navigationssoftware von Lockheed Martin hingegen imperiale Einheiten (Impuls in Pound-Force-Sekunden)
Clusterfuck: Therac-25 (1985-1987), unter anderem:
verteiltesverstreutes System: fehlerhafte Synchronisation zwischen einem Messprozess und einem parallel arbeitenden Steuerprozess- Benutzerführung: in bestimmten Situationen wurde nach der Eingabe neuer Daten der alte Datensatz weiterverwendet, obwohl die Benutzeroberfläche den neuen Datensatz anzeigte
- Überlauf: 8-Bit-Flag für die Anzeige der Notwendigkeit einer Sicherheitsprüfung konnte von 255 auf 0 überlaufen und dadurch die Prüfung überspringen
überfordert von Komplexität: Corrupted Blood (2005)
- vor COVID-19 eines der wichtigsten Studienobjekte für das Verbreitungsmuster einer Pandemie, inklusive Tiervektoren und asymptomatisch infektiösen Patienten
- ein bestimmter Bosskampf in "World of Warcraft" versieht Spielercharaktere mit einem negativen Statuseffekt, der sie langsam tötet und der auf naheliegende Charaktere ansteckend wirkt
- Spieler sollten mit diesem Statuseffekt den Bosskampf nicht verlassen können, aber die Reittiere der Spieler konnten es!
analog zu Copy-Paste-Fehler: Mariner 1 (1962)
- Programmcode wurde auf Papier geschrieben, dort wurde fehlerhafterweise mit "R" statt mit dem korrekten "R̅" (R mit Überstrich) gerechnet
Copy-Paste-Fehler: Pentium-FDIV-Bug
- Division von Fließkommazahlen (siehe STP009) beim Pentium verwendet einen Algorithmus, der zur Beschleunigung eine Tabelle von vorberechneten Werten verwendet
- fünf Einträge in dieser Tabelle wurden nicht richtig in das finale Chip-Design übernommen
- Ergebnis: bestimmte Divisionen liegen um einen Bruchteil eines ‰ daneben
- Rückrufaktion im Wert von über 400 Millionen $
- "Wie viele Intel-Mitarbeiter braucht man, um eine Glühbirne zu wechseln? 1,9999983256"
- im Gespräch erwähnt: Fast Inverse Square Root
66 Episoden
Alle Folgen
×Willkommen auf Player FM!
Player FM scannt gerade das Web nach Podcasts mit hoher Qualität, die du genießen kannst. Es ist die beste Podcast-App und funktioniert auf Android, iPhone und im Web. Melde dich an, um Abos geräteübergreifend zu synchronisieren.