Panne d'impression le mardi : l'histoire d'un espace manquant dans une règle système

Panne d'impression le mardi : l'histoire d'un espace manquant dans une règle système

bugLinuxArchitecture Système

Sources:Communauté Lobsters

“Je ne peux pas te montrer le problème aujourd’hui.” Lorsqu’une épouse s’est plainte à son mari que l’ordinateur familial ne fonctionnait plus, celui-ci lui a demandé pourquoi elle ne pouvait pas lui faire une démonstration. Sa réponse déconcertante fut : “Parce qu’aujourd’hui, on est mercredi.”

En 2009, la communauté Ubuntu a fait face à un mystère informatique bien étrange. De nombreux utilisateurs ont constaté que l’impression de documents via OpenOffice échouait de manière sporadique. La seule piste au début de l’enquête était que l’impression depuis toutes les autres applications fonctionnait parfaitement, tandis qu’OpenOffice envoyait silencieusement les travaux d’impression dans un trou noir. La plupart des développeurs ont donc porté leurs soupçons sur la couche applicative, pensant qu’il s’agissait d’un bogue propre à OpenOffice.

Réinstaller le système ne résoudra pas la malédiction du mardi

Certains utilisateurs ont employé les grands moyens : la réinstallation complète du système d’exploitation. Ayant terminé la réinstallation un jeudi et vérifié que l’impression fonctionnait à merveille, ils pensaient le problème réglé. Mais deux semaines plus tard, un mardi, l’imprimante est repassée sous silence.

Le problème ne résidait aucunement dans le code d’OpenOffice. Le véritable coupable se cachait bien plus profondément dans les composants système de base. Le système Linux utilise la commande file pour identifier le type de fichier, en s’appuyant sur plus de 1 600 règles de “magic pattern” maintenues par la communauté. Avant d’envoyer un document à l’impression, le système exécute file pour vérifier si le fichier est au format PostScript.

Conflit de correspondance de fichier Figure : Conflit entre la ligne de date dans l’en-tête PostScript et la règle de pattern magic. Source : Schéma maison

En 2001, une règle avait été ajoutée à la base de données de file pour identifier les fichiers Erlang JAM. En raison de l’oubli de l’échappement d’un espace, la chaîne Tue contenue dans la règle s’est transformée en un motif de correspondance brute, prioritaire sur la détection du PostScript. Par conséquent, si un fichier contenait la chaîne Tue, le système le classait à tort comme un fichier Erlang. Cela prouve qu’un oubli minime dans un composant de bas niveau peut paralyser l’ensemble du système.

Le calendrier, le meilleur outil de débogage

Lorsqu’on générait un fichier d’impression PostScript le mardi depuis OpenOffice, l’en-tête du fichier enregistrait automatiquement la date de création, comme %%CreationDate: (Tue ...). En analysant le fichier, la commande file tombait sur ce Tue, concluait immédiatement qu’il ne s’agissait pas d’un document d’impression et refusait de l’envoyer à l’imprimante.

Défaillance du composant système Figure : Une erreur minime de bas niveau provoquant la panne globale des applications supérieures. Source : Schéma maison

Même en 2026, cette histoire vieille de 15 ans s’est hissée en deuxième position des tendances sur Lobsters. Les développeurs de la communauté la considèrent comme un cas d’école en matière de méthodologie de débogage. Elle démontre que dans le génie logiciel moderne, la dimension temporelle peut être une variable clé pour résoudre des bogues inexplicables.

Dans un système complexe, aucun composant n’est insignifiant. Un simple espace manquant dans la règle d’un outil de base a suffi à paralyser les impressions. La prochaine fois que vous rencontrerez un bogue qui ne survient que certains jours, le calendrier sera peut-être votre premier outil de débogage.

Liens de référence :

  • OpenOffice n’imprime pas le mardi
  • Discussion sur la communauté Lobsters (s/im3eeh)