L'explosion d'une fusée Ariane 5 à cause d'un bogue

Proposé par
le

Dans l'histoire des bogues informatiques, un exemple célèbre concerne le vol 501 de la fusée Ariane 5 en 1996. Un dépassement de capacité (une variable de 8 bits devant accueillir un nombre en nécessitant 9) causa une défaillance du système, ce qui entraîna carrément l'explosion de la fusée.


Tous les commentaires (72)

a écrit : Alors pour ceux qui voudraient en savoir plus, la fusée Ariane 5 était environ 2 fois plus grande qu'Ariane 4.
Par soucis d'économie, et le calculateur en question étant très efficace sur le premier modèle, ils ne l'ont pas repensé et l'ont utilisé tel quel.
Or, une fusée qui tremble en
vol, ça aura tout de suite (beaucoup) plus de pêche si on pèse deux fois plus lourd.
Le calculateur a interprété ça comme une erreur, a fait remonter cette dernière, et un mécanisme automatisé a fait sauter le tout, fournissant l'un des potards les plus chers de l'histoire...
Il leur a fallu 1 ou 2 ans je crois pour trouver l'erreur (imaginez ressortir tous les plans pour les analyser...)
Afficher tout
Pour être encore plus lors de la défaillance technique
En gros la trajectoire prise par Ariane 5 était beaucoup plus courbée que celle d Ariane 4.
Donc l ordinateur de bord a très vite atteint ça capacité maximal, et pour simplifier le problème l ordinateur a crut que la fusée avait un angle de 25% hors de la trajectoire donc il a tout de suite redressé le "tir" et à cause de la vitesse Ariane 5 se brise en deux et dans la seconde qui a suivit le système d auto destruction c est enclenché !

Imaginer le silence dans la salle d observation ...

a écrit : Imagine un ascenseur de 8 personne. Tu en mets 9. Et Boum! Simple, efficace et assez illustratif ;)

Posté le

android

(0)

Répondre

a écrit : Il y a un programmateur qui a dû se faire enguirlander... Le programmeur ne s est pas fait enguirlander. D abord parce que ce n est pas dans la culture du monde spatial que de punir les erreurs et parce que l erreur est d avoir voulu faire stupidement des économies en ne simulant pas le fonctionnement du logiciel des centrales inertielles avant le tir.

Posté le

android

(1)

Répondre

a écrit : Pour la navette Challenger, qui a explosé au décollage avec 4 astronautes à bord, c'est un petit joint d'étanchéité (en silicone, me semble-t-il) appelé O-Ring qui était défectueux... Sur ce genre de système, tout doit être parfait. Ce qui me rend admiratif pour chaque lancement réussi, même de routine... Bravo les mecs. Afficher tout Pour info, O-ring en français c'est un joint torique.

D'après mon professeur d'électronique, ce 9 ème bit était le bit de signe, pour savoir si la valeur est positive ou négative. Les deux équipes d'ingénieurs chargés des modules ont pris des conventions différentes. Il parlait de la correction de l'angle de la navette. A vérifier. .

Posté le

android

(0)

Répondre

a écrit : Imagine un ascenseur de 8 personne. Tu en mets 9. Et Boum! C'est plutôt : tu as dans un magasin de porcelaine un étagère avec la place pour 8 boules de bowling, et tu en mets 9.

Posté le

android

(2)

Répondre

A noter qd même qu'Ariane 5, depuis ce seul echec est le lanceur le plus fiable du monde que ce soit en terme d'echec (1 seul) ou de précision de positionnement des satellites ( ce qui augmente la durée de vie du satellite). Les autres sont loin derrière, et certains n'ont pas de mécanisme d'auto-destruction (les russes notament.. Planquez vous ça revient)

a écrit : Ils auraient pu faire un simple ctrl+alt+supprim Ils ont fait encore plus simple, juste "supprime" ...

8 bits peuvent stocker 2^8 = 256 valeurs
Donc soit de -128 a 127 ou de 0 a 255 ça dépend si la variable est unsigned ou pas.
Erreur classique de stocker une valeur trop grande qu'on appelle un integer overflow ; une valeur erronée va être stockée et ca peut entrainer d'autres erreur si cette variable est utilisée pour allouer ou remplir de la memoire, comme un buffer overflow
Boom :)

Posté le

android

(2)

Répondre

a écrit : Pour la navette Challenger, qui a explosé au décollage avec 4 astronautes à bord, c'est un petit joint d'étanchéité (en silicone, me semble-t-il) appelé O-Ring qui était défectueux... Sur ce genre de système, tout doit être parfait. Ce qui me rend admiratif pour chaque lancement réussi, même de routine... Bravo les mecs. Afficher tout N'etaient ils pas 7 dans challenger?

Posté le

windowsphone

(0)

Répondre

a écrit : Valeur maximum d'une donnée 8 bit en decimal : 256
NON Monsieur. Valeur maxi : 255.
Mais il y a 256 positions possibles...
...La première c'est zéro
On se calme le ponpon ! Après tout les erreurs cela arrive a tout le monde, non ?

La prochaine fois qu'on me dit que mon code est pas correct parce que j'ai pas mis le bon type de variable, je pourrai répondre "mais moi je détruis aucune fusée donc ça va!"

Ok cet anecdote rentre dans mon domaine, je vais y apporter juste un correctif et plus de précision, faut savoir quand un programme marche il est rarement modifié, donc le programme qui gère la trajectoire de la fusée Ariane 5 était le même que celui de Ariane 4 sauf que la 5 était beaucoup plus rapide et devait se représenter sur 9 bits. Vu que le programme en utilisé que 8 le 9e que la fusée a utilisé était celui du correctif de trajectoire ce qui a fait zigzaguer la fusée . Voyant que la fusée allait retomber au sol ils ont activer l'autodestruction. Désolé pour les fautes je suis pas bien réveillé.

Comme dit plus haut, le calcul était réalisé en 8 bits (2^8=256), le dépassement de capacité s'est matérialisé par une valeur A erronée : A modulo 256 (reste de division entière : 255%256=255 ; 256%256 = 0 ; 257%256 = 1 ; etc.) Le bug n'a pas "planté", au sens informatique, le programme qui a par ailleurs continué à s'exécuter avec des valeurs fausses. Il est alors facile de comprendre pourquoi le comportement de la fusée n'était pas celui attendu..

J'avais assisté à la retransmission en direct de cette événement. Quelle tristesse quand la fusée avait commencé à dévier de sa trajectoire pour finalement exploser.

Ariane 5 avait très mal commencé sa carrière. Depuis heureusement, elle a su montrer sa grande performance et est aujourd'hui l'un des plus gros lanceurs au monde d'équipement pour l'espace.

A quand Ariane 6 ? :-)

Posté le

android

(0)

Répondre

a écrit : 8 bits est une capacité minuscule :o il n'y a que 256 chiffres possible
C'est a se demander comment ils arrivaient a envoyer une fusée avec cette technologie!
Je dis bravo
Oui à l'époque les programmeurs devaient être un peu rusés et bricoleur arriver à leurs fins. Dans ce cas par exemple pour coder des chiffres plus gros que 255, il suffit de les couper en deux, c'est une des techniques qui est utilisée dans les microprocesseurs encore à ce jour.
Le problème à l'époque était rarement la taille des chiffres qu'on pouvait stocker, mais plutôt la taille globale des mémoires qui était ridicules (quelques centaines d'octets, voire kilo octets au mieux).

Posté le

android

(0)

Répondre

a écrit : Valeur maximum d'une donnée 8 bit en decimal : 256

Donc le bug viens du fait que la valeur de la variable était supérieur au maximum possible enregistrable.
Attention, la valeur maximale en décimal est 255...
Les valeurs vont de 0 à 255, soit 00 FF en hexadécimal.
Mais effectivement il y a 256 valeurs possible.
Amicalement.

Posté le

android

(0)

Répondre

a écrit : Il y a un programmateur qui a dû se faire enguirlander... Programmeur* le "programmateur" c'est ce que tu as sur ton micro-onde au pire.

Posté le

android

(1)

Répondre

a écrit : Pour la navette Challenger, qui a explosé au décollage avec 4 astronautes à bord, c'est un petit joint d'étanchéité (en silicone, me semble-t-il) appelé O-Ring qui était défectueux... Sur ce genre de système, tout doit être parfait. Ce qui me rend admiratif pour chaque lancement réussi, même de routine... Bravo les mecs. Afficher tout En fait, Challenger est partie un jour où la météo était un peu fraîche, alors qu'elle n'aurait pas dû.
Plus tard, M. Feynman a démontré que les joints o-ring étaient beaucoup moins élastiques par basses températures, ce qui causa une fuite de carburant, puis boom.

Posté le

android

(0)

Répondre

a écrit : En fait, Challenger est partie un jour où la météo était un peu fraîche, alors qu'elle n'aurait pas dû.
Plus tard, M. Feynman a démontré que les joints o-ring étaient beaucoup moins élastiques par basses températures, ce qui causa une fuite de carburant, puis boom.
Je trouve ça dingue de savoir autant de choses et de ne pas être capable de dire "joint torique" en français.
Tout se traduit, même le vocabulaire technique!