Druckausfall an Dienstagen: Wie ein fehlendes Leerzeichen das System lähmte

Druckausfall an Dienstagen: Wie ein fehlendes Leerzeichen das System lähmte

bugLinuxSystemarchitektur

Quellen:Lobsters-Community

„Ich kann dir das Problem gerade nicht demonstrieren.“ Als eine Frau ihrem Mann klagte, dass der Heimcomputer defekt sei, fragte dieser, warum sie es nicht vorführen könne. Ihre verblüffende Antwort: „Weil heute Mittwoch ist.“

Im Jahr 2009 stieß die Ubuntu-Community auf ein rätselhaftes Systemproblem. Zahlreiche Nutzer stellten fest, dass das Drucken von Dokumenten über OpenOffice sporadisch fehlschlug. Der einzige Hinweis zu Beginn der Untersuchung war, dass der Druck aus allen anderen Anwendungen einwandfrei funktionierte – nur OpenOffice verschluckte die Druckaufträge spurlos. Die meisten Entwickler vermuteten die Ursache daher in der Anwendungsschicht selbst und hielten es für einen Softwarefehler in OpenOffice.

Neuinstallation hilft nicht gegen den Dienstags-Fluch

Manche Anwender griffen zum ultimativen Mittel: der Neuinstallation des Betriebssystems. Sie schlossen das Setup an einem Donnerstag erfolgreich ab und testeten den Druck – alles funktionierte. Doch zwei Wochen später, an einem Dienstag, verweigerte der Drucker erneut lautlos den Dienst.

Das Problem lag keineswegs im Code von OpenOffice. Der eigentliche Verursacher steckte tiefer in den Systemgrundlagen. Das Linux-System nutzt den Befehl file, um Dateitypen zu identifizieren, und stützt sich dabei auf über 1.600 von der Community gepflegte Magic-Pattern-Regeln. Vor dem Drucken prüft das System mit file, ob es sich um eine PostScript-Datei handelt.

Konflikt bei der Dateierkennung Abb.: Konflikt zwischen Datumszeile im PostScript-Header und Magic-Pattern-Regel. Quelle: Eigene Darstellung

Im Jahr 2001 wurde eine Regel zur Erkennung von Erlang-JAM-Dateien in die Regeldatenbank von file aufgenommen. Da das Maskieren eines Leerzeichens vergessen wurde, wurde der String Tue zu einem bloßen Mustervergleich, der zudem noch vor PostScript priorisiert war. Enthielt eine Datei den String Tue, stufte das System sie fälschlicherweise als Erlang-Datei ein. Ein kleiner Fehler in einer tiefen Basiskomponente hebelte somit den normalen Betrieb des gesamten Systems aus.

Der Kalender als bester Debugger

Wurde an einem Dienstag aus OpenOffice heraus eine PostScript-Druckdatei erzeugt, trug der Datei-Header automatisch das Erstellungsdatum ein, etwa %%CreationDate: (Tue ...). Beim Scannen stieß der Befehl file auf dieses Tue, schloss daraus sofort, dass es sich nicht um ein druckbares Dokument handelte, und verweigerte die Weiterleitung an den Drucker.

Fehler in tiefer liegenden Komponenten Abb.: Ein winziger Fehler in einer Basiskomponente führt zum Ausfall höherer Anwendungen. Quelle: Eigene Darstellung

Selbst im Jahr 2026 schaffte es diese 15 Jahre alte Geschichte erneut auf Platz zwei der Lobsters-Charts. Entwickler nutzen sie als Lehrbeispiel für Fehlersuchmethodik. Sie zeigt, dass in der modernen Softwareentwicklung die Dimension der Zeit selbst ein entscheidender Faktor bei der Fehlersuche sein kann.

In komplexen Systemen gibt es keine unwichtigen Komponenten. Ein einziges fehlendes Leerzeichen in der Regel einer Basiskomponente führte zum kompletten Druckausfall. Wenn Sie das nächste Mal auf einen Fehler stoßen, der nur an bestimmten Tagen auftritt, sollte der Kalender vielleicht Ihr erstes Debugging-Werkzeug sein.

Referenzlinks:

  • OpenOffice druckt nicht am Dienstag
  • Lobsters-Community-Diskussion (s/im3eeh)