Un bogue informatique avait contraint le Boeing 787 à être redémarré tous les 248 jours
Pour éviter une interruption totale du système électrique

Le , par Coriolan, Chroniqueur Actualités
De nos jours, toutes nos actions quotidiennes impliquent des programmeurs, du simple fait de passer un appel sur téléphone au pilotage des avions de ligne. C’est pourquoi on a vu pas mal de fois des gens tués dans des accidents de voiture à cause de bogues de logiciels alors que d’autres ont péri dans des crashs d’avions pour la même raison.

Parfois même, des projets de grande envergure sont condamnés à l’échec à cause d’un simple dysfonctionnement informatique lié au codage, à l’image du tristement célèbre vol 501 du lanceur européen Ariane 5 qui a eu lieu le 4 juin 1996 et qui s’est soldé par un échec. Ou plus récemment la chute libre de l'atterrisseur Schiaparelli de l’ESA (Agence spatiale européenne) sur le sol de Mars à cause d’un bogue informatique.

Vous l’aurez compris, même les grands projets coûtant parfois des milliards et des années de travail se trouvent voués à l’échec à cause de simples lignes de code. Mais qu’en est-il d’un avion de ligne moderne comme le Boeing 787 ?


Boeing 787-9 Dreamliner

En 2015, il a été découvert qu’un bogue informatique pouvait empêcher les pilotes de garder le contrôle du Boeing 787, possiblement en plein vol, a informé la Federal Aviation Administration (FAA) dans une directive destinée à toutes les compagnies aériennes utilisant cet avion.

Le bogue qui n’est rien d’autre qu’un problème classique de débordement d’entier, est situé au niveau du contrôle des générateurs de l’avion. Le bogue rapporté par Boeing à la FAA est déclenché lorsque ces derniers sont laissés allumés durant 248 jours (8 mois). Le 787 a quatre de ces unités de contrôle des générateurs, qui allumées simultanément, peuvent s’arrêter en même temps et causer une interruption totale du système électrique.

Cette situation a poussé l’agence américaine de l’aviation civile à émettre une directive d’aéronavigabilité : « Nous avons émis cette directive pour éviter la perte de tout le courant électrique, ce qui pourrait causer une perte du contrôle de l’avion, » a écrit la FAA. « Si les quatre unités de contrôle des générateurs (associées aux générateurs du moteur) venaient d’être allumées simultanément, après 248 jours d’allumage, tous les générateurs entreront en mode sécurité-défaut, causant une perte de tout le courant électrique, quelle que soit la phase de vol. ».

Autrement dit, si l’échec du système électrique venait d’arriver durant une phase critique du vol comme le décollage ou l’atterrissage, ou bien lors d’une manœuvre en plein air, la perte du contrôle pourrait être catastrophique.

À l’époque, la FAA a considéré cette situation comme étant critique et a promulgué une nouvelle règle immédiate pour remédier à cette situation. En même temps, Boeing avait promis de publier un correctif.

« La directive résout un problème d’une condition qui a été observée dans un laboratoire. Des tests de simulation ont révélé que cette situation est possible dans des cas où l’énergie d’un avion est laissée allumée pendant plus de 8 mois continus. Aucun avion dans la flotte n’a connu une telle situation, » a informé un porte-parole de Boeing.

Selon les propres registres de Boeing à l’époque, tous les avions 787 en service ont été arrêtés et redémarrés dans le cadre de leur maintenance. Boeing avait informé que les opérateurs vont continuer à redémarrer leurs avions de façon périodique pendant des intervalles de temps déterminés jusqu’à la disponibilité d’un correctif logiciel.

La note de la FAA n’avait pas donné plus de détails sur ce bogue, mais il s’agirait d’un problème de débordement d’entier 32-bit déclenché après 2^31 centisecondes (248,55 jours) de fonctionnement continu. 2^31 étant le nombre de secondes dans 248 jours multipliés par 100 (un compteur en centièmes de seconde).

Pour implémenter un tel compteur, deux options peuvent être suivies, soit augmenter le nombre de bits utilisés, ce qui empêche le débordement, ou bien travailler avec l’arithmétique multiprécision. Certains commentateurs ont suggéré qu’il y a ici un besoin de passer à une architecture 64 bits puisqu’elle permet d’utiliser plus de registres (généraux et XMM), un meilleur support pour PIC (position-independent code), et en général une meilleure performance des instructions syscall/sysret du système. Et dans ce cas, la période nécessaire pour le redémarrage de l'avion passerait de 248 jours à 3 milliards d'années !


Redémarrer le Dreamliner en plein vol n'est pas une solution possible

Un intéressant point rapporté par la FAA est qu’il faut presque une heure pour redémarrer les unités de contrôle des générateurs dans le 787, donc il n’y a pas un bouton de redémarrage comme un serveur par exemple.

Ce bogue montre juste comment l’immersion de l’informatique dans l’ingénierie rend la conception des systèmes embarqués de plus en plus complexe. Ainsi, l’Airbus A380, un avion dont la complexité est comparable à celle du Dreamliner, compte plus de 100 millions de lignes de code.

Source : federalregister - The Guardian

Et vous ?

Avez-vous déjà rencontré des bogues similaires ? Comment avez-vous entrepris de les corriger ?

Voir aussi

Selon ce développeur, la fausse alerte de missile à Hawaii est due à la conception logicielle, elle est de la faute des développeurs !
Des programmeurs avouent avoir écrit du code non éthique et parfois illégal en raison des requêtes de plus en plus contraignantes de leurs employeurs


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de vxlan.is.top vxlan.is.top - Membre averti https://www.developpez.com
le 05/09/2018 à 0:15
Cf liste suivante, non exhaustive probablement

https://en.wikipedia.org/wiki/List_o..._software_bugs

Dans cette liste, j'ai d'ailleurs retrouvé un bug que j'avais vu de mes propres yeux il y a quelques années sur le jeu PAC-MAN (c'est pas moi qui jouais, c'était un pote addict à ce jeu )

http://www.donhodges.com/how_high_can_you_get2.htm

Moins dangereux que le bazar survenu au Boeing 787 mais somme toute spectaculaire

-VX
Avatar de Aiekick Aiekick - Membre chevronné https://www.developpez.com
le 05/09/2018 à 0:46
comme pour tout type d'appareil homologué il ya deux type d’énergie. il perde électrique, il leur reste l'hydraulique par contre il vont avoir du mal mais c'est possible, ca a déjà été fait
Avatar de sergio_is_back sergio_is_back - Membre expérimenté https://www.developpez.com
le 05/09/2018 à 8:26
Citation Envoyé par Aiekick Voir le message
comme pour tout type d'appareil homologué il ya deux type d’énergie. il perde électrique, il leur reste l'hydraulique par contre il vont avoir du mal mais c'est possible, ca a déjà été fait
Oui mais il n'y pas plus de commandes hydrauliques sur les appareils toutes les commandes sont maintenant électriques avec redondance...
De plus l'hydraulique c'est pas magique, la pression est fournie par des pompes.... électriques... ou entrainée mécaniquement par les générateurs...
Avatar de Ryu2000 Ryu2000 - Membre extrêmement actif https://www.developpez.com
le 05/09/2018 à 9:18
C'est pas trop grave, il y a un compteur de secondes et au bout de 231 il y a un débordement d'entier 32 bits.
Redémarrer un système dans un avion ce n'est pas la fin du monde...
248 jours c'est pas ultra fréquent...

C'est beaucoup moins grave que ça :
Vol 501 d'Ariane 5
L'incident, dû à un dépassement d'entier dans les registres mémoire des calculateurs électroniques utilisés par le pilote automatique, a provoqué la panne du système de navigation de la fusée, causant de fait sa destruction ainsi que celle de la charge utile. Cette charge utile était constituée des quatre satellites de la mission Cluster, d'une valeur totale de 370 millions de dollars.
===
Est-ce que sans passer par un système 64 bits il n'y aurait pas moyen de retarder le problème ?
Si tu prends 2 entiers, t’incrémentes un deuxième compteur à chaque fois que le premier fait un tour et voilà.
Et après ça doit faire dans les 231 * 231 secondes avant que la combinaison des 2 compteurs soit au max.
Avatar de Jipété Jipété - Expert éminent sénior https://www.developpez.com
le 05/09/2018 à 9:55
Citation Envoyé par Ryu2000 Voir le message
C'est pas trop grave, il y a un compteur de secondes et au bout de 231 il y a un débordement d'entier 32 bits.
Redémarrer un système dans un avion ce n'est pas la fin du monde...
Non, il faut juste patienter une heure...
Et si les 4 sont en carafe en même temps, tu te retrouves avec un fer à repasser de je sais pas combien de centaines de tonnes à 10 000 pieds, mais tout va bien, Ryu2000 est le pilote.
Tu aurais pu faire l'effort de lire l'article en entier. Maintenant si tu ne comprends pas ce que tu lis, c'est un autre problème...

Citation Envoyé par Ryu2000 Voir le message
C'est beaucoup moins grave que ça :
Vol 501 d'Ariane 5
C'est vrai que la vie humaine n'a aucune valeur, je l'oublie toujours... Alors comparé à des satellites, elle ne fait pas le poids.

Citation Envoyé par Ryu2000 Voir le message
Est-ce que sans passer par un système 64 bits il n'y aurait pas moyen de retarder le problème ?
Si tu prends 2 entiers, t’incrémente un deuxième compteur à chaque fois que le premier fait un tour et voilà.
Ce qui revient à prendre un int64...
Avatar de Ryu2000 Ryu2000 - Membre extrêmement actif https://www.developpez.com
le 05/09/2018 à 10:13
Citation Envoyé par Jipété Voir le message
Non, il faut juste patienter une heure...
Ben ça va...
J'imagine qu'on doit arriver à trouver une heure pendant laquelle l'appareil est en pause.

Citation Envoyé par Jipété Voir le message
Et si les 4 sont en carafe en même temps
Pour que ça arrive il faudrait très mal gérer le truc et ne pas avoir de chance, parce que la probabilité est ultra faible.
Les avions sont en maintenance hyper souvent, il y a bien moyen de faire un redémarrage à ce moment là.

Arriver à caler 1 heure dans 248 jours ça ne doit pas être si compliqué que ça...

Citation Envoyé par Jipété Voir le message
C'est vrai que la vie humaine n'a aucune valeur, je l'oublie toujours...
Il y a eu combien de morts à cause de ce compteur de seconde ?
Ils savent que 8 mois après avoir redémarrer le système qu'il va falloir le redémarrer.
C'est pas une fois en vol, qu'ils vont se rendre compte que le compteur va atteindre la limite.

Citation Envoyé par Jipété Voir le message
Ce qui revient à prendre un int64...
Ouais mais t'as pas besoin de changer de processeur !
En plus en changeant le matériel tu prends le risque de créer des bugs ailleurs.

De toute façon en augmentant ce compteur, il va peut être y avoir un problème avec un autre compteur plus tard.

Le problème c'est ça :
Citation Envoyé par Coriolan Voir le message
Un intéressant point rapporté par la FAA est qu’il faut presque une heure pour redémarrer les unités de contrôle des générateurs dans le 787, donc il n’y a pas un bouton de redémarrage comme un serveur par exemple.
Il faut implémenter un processus de redémarrage simplifier.
Après ça prendrait peut être que 5 minutes.

Est-ce que vous laissez votre ordinateur allumé pendant 248 jours non stop ? (si votre PC est un serveur peut être... mais bon 1 redemarrage tout les 8 mois c'est pas abusé).
Avatar de domcars0 domcars0 - Candidat au Club https://www.developpez.com
le 05/09/2018 à 10:34
"un problème de débordement d’entier 32-bit déclenché après 231 centisecondes (248,55 jours)"
Joli Bug !!
Sachant qu'une centiseconde vaut 10−2 seconde , on en déduit que 231 cs vaut donc 2,31 secondes. Et non pas 248,55 jours.
Avatar de Guntha Guntha - Membre éprouvé https://www.developpez.com
le 05/09/2018 à 10:53
À vrai dire, ce qui m'étonne le plus dans la news, c'est que des gens envisagent de laisser un avion allumé pendant 8 mois. Je croyais naïvement qu'ils étaient rebootés entre chaque vol
Avatar de 6carbon 6carbon - Membre averti https://www.developpez.com
le 05/09/2018 à 11:41
Ce ne serait pas plutôt Boeing qui aurait ignoré une recommandation de son fournisseur de calculateur?
Les modules de Control Command sur lesquels je travail sont sécurisés SIL2 à conditions d'être rebootés une fois par mois. Donc dans le doute on les reboot automatiquement touts les 7 jours. Sur des engins de chantier c'est pas trop gênant on arrive à trouver 30s d'inactivité sur une semaine.

Même sur des systèmes aéronautiques SIL4 il doit y avoir des recommandations de ce genre.
Avatar de Steinvikel Steinvikel - Membre averti https://www.developpez.com
le 05/09/2018 à 13:02
Citation Envoyé par domcars0 Voir le message
"un problème de débordement d’entier 32-bit déclenché après 231 centisecondes (248,55 jours)"
Joli Bug !!
Sachant qu'une centiseconde vaut 10^−2 seconde , on en déduit que 231 cs vaut (...)
le problème est orthographique, le mystère est résolu en lisant la phrase qui la suit : il manque simplement le chapeau circonflexe pour indiquer l'usage d'une puissance.
" (...) 32-bit déclenché après 231 centisecondes (248,55 jours) de fonctionnement continu. 2^31 étant le nombre de secondes dans 248 jours multipliés par 100 (...) "
2^31 valant: 2 147 483 648
248,55 jours: 2 147 472 0 (*100 cs)
Contacter le responsable de la rubrique Accueil