Skurrile Bugs und die Geschichten dahinter
Durchsucht man das World-Wide-Web nach seltsamen, erstaunlichen und lustigen Bugs, findet man viele interessante Geschichten. Wir möchten in diesem Beitrag einmal ein paar berühmte Bug-Fälle – von zum Schmunzeln bis höchst destruktiv – zusammenfassen. Oft ist übrigens die Entdeckung und Behebung genauso interessant wie der Bug selbst.
Der 500-Meilen-Email-Bug
Einer der kuriosesten Bugs wurde in einem E-Mail-System einer Universität entdeckt. Ein Professor bemerkte, dass E-Mails an Empfänger innerhalb eines 500-Meilen-Radius ohne Probleme zugestellt wurden, während E-Mails an weiter entfernte Empfänger niemals ankamen.
Wie konnte das sein? Nach vielen Kopfzerbrechen und dem Durchforsten des Codes stellte sich heraus, dass der Fehler in einem Timeout-Parameter lag, der auf eine Zeitspanne basierte, die es Lichtsignalen ermöglichte, eine bestimmte Entfernung zurückzulegen. Da die Entwickler die Lichtgeschwindigkeit in der Berechnung verwendet hatten, führte dies zu einem sehr realen, wenn auch ungewollten „Horizont“ von 500 Meilen für die E-Mail-Kommunikation. Nach der Anpassung des Timeout-Parameters wurde der Bug behoben.
Dieser Bug ist übrigens auch verantwortlich für den Namen eines Newsletters und Blogs, der sich nur mit absurden Software-Bugs befasst. Der lesenswerte Newsletter heißt 500 Mile Email und wurde von Harley Hicks begründet.
Der Mars Climate Orbiter
Der Mars Climate Orbiter war eine NASA-Sonde, die im Rahmen des Discovery-Programms im Jahr 1999 zum Mars gesendet wurde, aber letztlich aufgrund eines ebenso berühmten wie simplen Software-Bugs einfach verglühte. Dieses unrühmliche Ende eines für damalige Zeiten hochtechnologischen Systems wurde durch eine einfache Einheitenverwechslung verursacht: Während das Navigationsteam seine Berechnungen in metrischen Einheiten durchführte, verwendete die Software des Orbiters angloamerikanische Maßeinheiten. Es verwendete also Einheiten wie Pfund (für Gewicht), Zoll und Fuß (für Länge) und Gallonen (für Volumen), die sich von den metrischen Einheiten wie Kilogramm, Meter und Liter unterschieden. Diese Diskrepanz führte dazu, dass der Orbiter viel näher an den Mars heranflog als geplant und letztlich an der Marsatmosphäre verglühte.
Was kann man daraus lernen? Der Vorfall zeigt uns die Bedeutung, sich auf gemeinsame Standards und Kommunikationsformen in der Softwareentwicklung zu einigen und diese Standards, auf die man sich committed hat, auch durchgehend einzuhalten.
Der Pentium FDIV Bug
Ein weiteres, äußerst berühmtes Beispiel ist der FDIV-Bug in Intels Pentium-Prozessoren Mitte der 1990er Jahre. Dieser Fehler in der Fließkomma-Divisionsoperation führte dazu, dass der Prozessor bei bestimmten Divisionen falsche Ergebnisse lieferte. Obwohl der Fehler nur unter sehr spezifischen Bedingungen auftrat und die meisten Benutzer ihn wahrscheinlich nie bemerkt hätten, führte die öffentliche Aufmerksamkeit, die er erhielt, letztendlich dazu, dass Intel eine Austauschaktion starten musste. Dieser Vorfall zeigte die Bedeutung der Genauigkeit in der Hardware-Entwicklung und das wachsende Bewusstsein der Öffentlichkeit für technische Details.
Der Fehler ist übrigens so bekannt, dass es dazu einen eigenen Wikipedia-Artikel gibt, den man hier nachlesen kann.
Der Y2K-Bug
Einer der berühmtesten und potenziell katastrofalsten Bugs in der Geschichte der Technologie war der Y2K-Bug, auch bekannt als das Jahr-2000-Problem. Der Bug resultierte aus der Praxis, in Computersystemen das Jahr mit nur zwei Ziffern zu kodieren (z.B. „99“ für 1999), um Speicherplatz zu sparen. Dies führte zu einer weit verbreiteten Befürchtung, dass zum Jahreswechsel 1999 auf 2000 Computersysteme das Jahr „00“ nicht als 2000, sondern als 1900 interpretieren würden, was zu fehlerhaften Berechnungen und Ausfällen in allem von Bankensystemen bis hin zu Kraftwerkssteuerungen führen könnte.
Weltweit wurden Milliarden in die Behebung des Problems investiert, indem Software aktualisiert und Systeme geprüft wurden, um sicherzustellen, dass sie das neue Jahrtausend korrekt verarbeiten könnten. Dank dieser Anstrengungen blieben die befürchteten katastrophalen Auswirkungen weitgehend aus, und der Y2K-Bug dient heute als mahnendes Beispiel für die Bedeutung vorausschauender Planung in der Softwareentwicklung.
Der Heartbleed-Bug
Heartbleed war ein schwerwiegender Sicherheitsfehler in der OpenSSL-Softwarebibliothek, der im April 2014 entdeckt wurde. OpenSSL wird weit verbreitet zur Implementierung der SSL- und TLS-Protokolle für Internetkommunikation verwendet und bietet Verschlüsselung für eine Vielzahl von Diensten, um sensible Daten wie Passwörter und persönliche Informationen zu schützen.
Der Bug ermöglichte es Angreifern, den Speicher von Webservern zu lesen und so Zugang zu einer großen Menge an sensiblen und vertraulichen Daten zu erlangen, und das auch noch ohne Spuren zu hinterlassen. Das Besorgniserregende war in diesem Fall nicht nur die einfache Ausnutzbarkeit, sondern auch die Tatsache, dass der Bug rund zwei Jahre völlig unentdeckt blieb.
Heartbleed führte im Ergebnis zu verstärkten Investitionen in die Sicherheit von Open-Source-Software und zu einem besseren Verständnis der Bedeutung von Sicherheit in der digitalen Welt.
Fazit
Diese Anekdoten zeigen, dass Bugs in der Softwareentwicklung manchmal bizarre Formen annehmen können. Das sollte uns daran erinnern, dass trotz aller Fortschritte in der Technologie immer noch Raum für (menschengemachte) Fehler, Unachtsamkeiten und Missverständnisse besteht, die weitreichende Folgend haben können. Die Geschichten dieser Bugs sind nicht nur unterhaltsam, sondern dienen auch als wertvolle Lektionen über die Bedeutung von Sorgfalt und gründlicher Prüfung von Arbeitsergebnissen vor deren Veröffentlichung (d.h. vor allem fachgerechtem Software-Testing).