N° 284 dimanche 11 octobre 2026

Rechercher

Technologie

Mars Pathfinder : l'inversion de priorité qui a failli coûter la mission

En 1997, l'atterrisseur Mars Pathfinder a subi des redémarrages en boucle à cause d'un bug logiciel d'inversion de priorité. Retour sur la cause et la solution.

Mars Pathfinder : l'inversion de priorité qui a failli coûter la mission
Mars Pathfinder: What Really Happened?

En 1997, l'atterrisseur Mars Pathfinder de la NASA et son petit rover Sojourner se posent sur la planète rouge. Tout fonctionne parfaitement pendant quelques jours. Puis, brutalement, l'atterrisseur enchaîne les redémarrages complets de son système. Un chien de garde, un watchdog timer, détecte une anomalie et force la machine à redémarrer. Sur Terre, les ingénieurs cherchent l'origine de ce dysfonctionnement qui menace la mission.

La cause racine est identifiée : une inversion de priorité. Ce phénomène se produit lorsqu'une tâche de faible priorité détient une ressource dont une tâche de haute priorité a besoin, empêchant cette dernière de s'exécuter. Le système d'exploitation utilisé était VxWorks, mais le problème peut survenir sur n'importe quel système à ordonnancement par priorités. Dans le cas de Mars Pathfinder, deux tâches partageaient un même mutex pour éviter de se marcher dessus. La tâche la plus prioritaire distribuait les données. La moins prioritaire traitait les données météorologiques. Une tâche de priorité intermédiaire gérait la maintenance du bus.

Le scénario de la panne est précis. La tâche de faible priorité détenait le mutex, puis perdait son créneau d'exécution avant de l'avoir libéré. La tâche de haute priorité ne pouvait alors plus acquérir ce mutex. Mais la tâche de faible priorité ne reprenait pas la main, car les tâches de priorité moyenne attendaient pour s'exécuter. Résultat : la tâche de haute priorité se retrouvait bloquée, en attente d'une ressource qui ne pouvait être libérée que par la tâche la moins prioritaire, elle-même empêchée de tourner. C'est exactement ce qu'on appelle une inversion de priorité.

Le plus frustrant est que les ingénieurs avaient observé ce comportement de manière occasionnelle lors des tests. Ils l'avaient classé parmi les « glitches », ces anomalies mineures et intermittentes. Une erreur classique : si l'on ne comprend pas pourquoi un problème survient, on ne peut pas savoir qu'il ne se reproduira pas. Sur Mars, le bug s'est manifesté de façon répétée et a menacé la mission toute entière.

Heureusement, VxWorks prévoit ce type de situation. Le vaisseau disposait de suffisamment de capacités pour activer l'héritage de priorité sur le mutex concerné. Ce mécanisme permet à la tâche de faible priorité de bénéficier d'un coup de pouce : sa priorité est temporairement relevée parce qu'une tâche plus importante attend après elle. La tâche basse priorité peut ainsi terminer rapidement et libérer la ressource, débloquant la tâche critique. La solution a été appliquée à distance et Mars Pathfinder a pu reprendre sa mission scientifique.

Cet épisode est devenu un cas d'école en informatique embarquée. Il illustre la difficulté des systèmes temps réel, où la gestion des priorités et des ressources partagées peut produire des blocages invisibles au premier abord. Il rappelle aussi l'importance de ne jamais balayer une anomalie inexpliquée sous prétexte qu'elle est rare. Dans l'espace, un bug intermittent peut devenir permanent. La leçon de Mars Pathfinder reste d'actualité pour tous les développeurs de logiciels critiques, des satellites aux voitures autonomes.

3Vues

Florence Barbier

Auteur

Rédactrice culture

Florence Barbier couvre pour Nacrée l’actualité, la politique, l’économie, la société et la culture. Son travail met l’accent sur la vérification, le contexte et la clarté pour les lecteurs.