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)

Pour avoir été à Kourou pendant le tir, l'explosion a été décidée par les ingenieurs suite á une deviation majeure de trajectoire et un retournement de la fusée (1er tir Ariane 5). On nous a meme mis en confinement a l'ecole à cause des risques chimiques.

Oui ça évidement, on vous demande de répondre par 'oui' ou par 'non' alors : ça dépend, ça dépasse !

Posté le

windowsphone

(16)

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.
Petite erreur classique, sur 8 bits on peut coder 256 valeurs différente qui vont de 0 à 255. Pour faire un 256 il faut 9 bits! 256 =1 0000 0000b en binaire.

Il ne faut pas voir le dépassement de capacité d'une variable comme une explosion. au contraire. Sur 8 bits par exemple 255+1=0 car les 8 derniers bits seuls sont gardés et pour 256 ils valent tous 0.

Ariane a rencontré une erreur fatale et va devoir exploser.

Posté le

android

(2)

Répondre

a écrit : Imagine un ascenseur de 8 personne. Tu en mets 9. Et Boum! C'est plutôt le contraire :)
Imagine un ascenseur de 9 personnes et tu en mets 8.
Bon dans le cas de l'ascenseur il ne se passera rien.. ;)

Posté le

android

(0)

Répondre

a écrit : Petite erreur classique, sur 8 bits on peut coder 256 valeurs différente qui vont de 0 à 255. Pour faire un 256 il faut 9 bits! 256 =1 0000 0000b en binaire.

Il ne faut pas voir le dépassement de capacité d'une variable comme une explosion. au contraire. Sur 8 bits par exemple 255+1=0 car les 8 dernie
rs bits seuls sont gardés et pour 256 ils valent tous 0. Afficher tout
Il me semble que l'erreur est parfois commise parce que le premier bit est 2puissance 0 (1) et non 2 puissance 1 (qui fait donc 2 et donc donnerait toujours un nombre pair)

ce qui nous fait pour le 8ème bit, 2puissance 7 (128)

merci de m'avoir fait replonger dans mes notions d'automatisme (bah oui, j'suis d'une autre époque ^^)

Posté le

windowsphone

(1)

Répondre

a écrit : Imagine un ascenseur de 8 personne. Tu en mets 9. Et Boum! Imagine plutôt un ascenseur dans un immeuble de 8 étages mais avec un bouton pour le 9ème.

Posté le

android

(3)

Répondre

Petite explication : la centrale inertielle qui mesure les forces et permet donc de connaître la position était reprise d'ariane 4 qui subissait de forces beaucoup moins grandes. L'erreur vient du fait que les "compteurs" étaient suffisants pour ariane 4 mais pas pour ariane 5. On peut prendre l'exemple d'un compteur ayant 3 cases il peut donc aller jusqu'à 999. Sauf que là les valeurs dépassaient 1000. C'est ce qui s'est passé en binaire et a fait "planter" le logiciel.

Posté le

android

(5)

Répondre

Notre professeur d'architecture des ordinateurs nous a expliqué ça ! L'autodestruction doit se déclencher s'il y a un problème et comme la fusée a pas trop compris ce qui lui arrivait elle a décidé d'offrir un feu d'artifice ! C'est joli mais onéreux !

Posté le

android

(0)

Répondre

Ce n'est pas la taille qui compte... ben la si.

Posté le

android

(1)

Répondre

C'est rien, t'inquiète pas, c'est juste un petit bug...

J'apporte une précision car je vivais en guyane à l'epoque du lancement. En fait le bug a eu pour consequence de reinitialiser la centrale inertielle de la fusée. Elle a donc voulue faire demie tour pour retourner à son point de depart. Elle s'est alors brisée en 2 et et le contrôle au sol appuya sur le bouton d'autodestruction.
Source : mon cousin ingénieur chez ariane espace responsable du développement des boosters d'ariane 5

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

En réalité ce n'est pas le bogue qui a fait exploser le vol, mais l'opérateur en appuyant sur le gros bouton rouge. Le débordement d'entier à généré un calcul de trajectoire incorrect entraînant une déviation par rapport à la trajectoire prévu impossible à corriger. Il a donc fallu déclarer le lanceur comme prévu et le faire exploser pour éviter des dégâts sur les populations.

Posté le

android

(1)

Répondre

Une anecdote que nous racontent souvent les profs d'info.

Imaginons que la valeur maximale stockable dans la variable 8bits soit 1000 (1111 1111 en binaire)(exemple! La vraie valeur est 256).
Lorsque nous allons faire +1, et ainsi passer à 1001, ce nombre nécessitera 9bits pour être stocké entièrement.
A la place de 1001, la variable mesurant l'altitude est devenue, en fonction du type de variable, soit -1000 (1 0000 0000b (le '1' est ici pour le signe)), soit 0 (0000 0000b).
La fusée, croyant alors qu'elle retombait vers la Terre, a explosé, grâce/à cause d'une sécurité, car il est préférable de faire un feu d'artifices à plusieurs millions de dollars que de laisser une fusée pleine de carburant s'écraser sur d'éventuelles zones peuplées.

On parle aussi que le système métrique utilisé n'était pas le même entre le calcul théorique et la programmation (mètre vs pieds ou km vs miles).

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.
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

J'espère que Matt Damon sur Mars a d'autres ingénieurs à son service...

Posté le

android

(1)

Répondre

a écrit : Imagine un ascenseur de 8 personne. Tu en mets 9. Et Boum! Pas exactement, je dirais plus imagine un ascenseur de 8 étages qui veut aller au neuvième .. Boom

Posté le

android

(1)

Répondre

En complément le calculateur était programmé en ada. Un langage spécialement conçu pour gérer ce type d erreur. Mais comme l ada est très contraignant, les développeurs auraient désactiver ces contrôles. Fatal error!!

Posté le

android

(1)

Répondre