Wie OpenAI einen unmöglich geglaubten Fehler fand
Ein winziger Bug schlummerte seit fast zwei Jahrzehnten unentdeckt. Ein selbst geschriebenes KI-Skript half bei der Fehlersuche.

OpenAI hat mysteriöse Systemabstürze in der Dateninfrastruktur von ChatGPT behoben. Eine groß angelegte Analyse Tausender Fehlerberichte deckte zwei völlig unabhängige Ursachen auf: einen defekten Cloud-Server und einen 18 Jahre alten Fehler in einer weitverbreiteten Code-Bibliothek.
Fehlersuche in der Dateninfrastruktur
Die Abstürze betrafen den Dienst Rockset. Er ist in C++ geschrieben und durchsucht Datenbanken nach relevanten Informationen, während ChatGPT eine Antwort formuliert.
Bei den Ausfällen schien eine Funktion normal zu enden, kehrte dann aber an eine ungültige Speicheradresse zurück. Die Entwickler untersuchten zunächst einzelne Speicherabbilder der Abstürze, kamen mit dieser klassischen Methode jedoch nicht weiter.
Anzeige
Perspektivwechsel bringt den Durchbruch
Das Team betrachtete die Abstürze fortan auf Populationsebene. Ein von ChatGPT geschriebenes Skript wertete alle Fehlerberichte des vergangenen Jahres aus und kategorisierte sie automatisch.
Die Daten zeigten sofort klare Muster. Was wie ein einzelner, komplexer Fehler aussah, entpuppte sich als zwei völlig getrennte Probleme.
Die erste Fehlerquelle war ein Hardware-Defekt. Die Auswertung führte zu einem einzelnen Azure-Server, der mathematische Operationen falsch berechnete. Nachdem dieser Rechner aus dem Verkehr gezogen war, verschwand ein Teil der Abstürze sofort.
Das winzige Zeitfenster
Die verbleibenden Ausfälle traten auf, wenn Rockset sogenannte Ausnahmen im Programmcode abfing. Dabei verließ sich der Dienst auf die Bibliothek GNU libunwind.
In deren Code stießen die Entwickler auf eine Race Condition, die dort seit 18 Jahren unentdeckt lag. Das anfällige Zeitfenster umfasste exakt eine einzige Prozessorinstruktion.
Damit der Fehler auftritt, muss ein externes Zeitsignal genau in diesem Zeitraum von etwa einhundert Pikosekunden eintreffen. Bei normalen Anwendungen passiert das praktisch nie.
OpenAI nutzt solche Ausnahmen jedoch gezielt, um die eigenen Server vor Überlastung zu schützen. Ein stark ausgelasteter Rechner wirft bis zu 10.000 Ausnahmen pro Sekunde, was das eigentlich unwahrscheinliche Zusammentreffen zur täglichen Realität machte.
Das Entwicklerteam stellte den Dienst auf eine alternative Bibliothek um. Der Fehler in GNU libunwind wurde über einen von OpenAI eingereichten Patch mittlerweile ebenfalls geschlossen.