Die All Stars der Software-bugs und was wir von ihnen lernen können
Christian Seifert stellt hier berühmte Bugs vor, die es bis auf die Schlagzeilen geschafft haben. Im Folgenden eine Zusammenfassung der Bugs und deren Ursache.
Mars Climate Orbiter (1999): Raumsonde vorscholl kurz vor Ankunft am Mars
Ursache: Zwei Teams entwickelten unterschiedliche Teilsysteme und benutzten einerseits imperiale Einheiten und andererseits SI-Einheiten. Die Sonde schickte Daten in der Einheit Pounds of Force und die NASA interpretierte diese in der Einheit Newton
Therac-25 (1980s): Bestrahlungsgerät führte zur Überdosis, bei der drei Menschen starben
Ursache: Race Condition bei der Dateneingabe (erst nach 2 Jahren aufgetreten)
Nebenursache: Eingesetzt wurde für die Software ein einziger Entwickler, der die Qualitätssicherung für sich selbst durchgeführt hat
Ariane 5 (1996): Beim Start der Rakete kam es zur Explosion
Ursache: Umwandlung eines 64 Bit Floating Point Wertes in einen 16 Bit Signed Integer
Nebenursache: kein Exception Handling, Backup Software verwendete denselben Code, Code wurde aus dem Vorgängermodell Ariane 4 übernommen
Microsoft Zune (31.12.2008): Das Gerät ging nicht mehr an
Ursache: Edge Case bei der Datumsberechnung (Schaltjahr)
iOS (01.01.2012): Der Wecker hat nicht funktioniert
Ursache: Edge Case bei der Datumsberechnung (Week based year). Der 01.01.2012 war kalendarisch noch in der letzten Woche von 2011, wodurch der Wecker gedacht hat, es wäre der 01.01.2011.
Lockheed F-22 Raptor (11.02.2007): Ausfall des Onboard-Computers mitten über dem Pazifik (musste vom Tanker nach Hause navigiert werden)
Ursache: Überschreiten der internationalen Datumsgrenze
Microsoft Windows Genuine Advantage (August 2007): Lizenzvalidierung von Windows schlugen auch bei validen Lizenzen fehl
Ursache: Validierungscode zu früh auf der Prod deployed
Nach 30 Minuten wurde das Problem erkannt, erst nach 12 Stunden erfolge das Rollback
Log4j (2021): Geloggte Nachricht kann fremden Code ausführen
Ursache: Bei der Ausgabe vom User-Agent als Logeintrag kann Code eingeschleust werden, der ausgeführt wird.
Dieses Verhalten war aber klar dokumentiert. War es ein Bug? Wo fängt ein Bug an? Wo hört ein Feature auf?
Boeing 787 Dreamliner (2020): muss alle 51 Tage neu gebootet werden (auch heute noch)
Ursache: Daten sammeln sich im Speicher an und können dazu führen, dass irreführenden Daten anzeigen werden