Les bugs bizarres et les histoires qui les sous-tendent

Skurrile Bugs und die Geschichten dahinter

Si vous cherchez des bugs étranges, étonnants et amusants sur le World-Wide-Web, vous trouverez de nombreuses histoires intéressantes.
Dans cet article, nous allons résumer quelques cas de bugs célèbres, des plus amusants aux plus destructeurs.
Souvent, la découverte et la correction sont aussi intéressantes que le bug lui-même.

Le bogue des 500 miles par e-mail

L’un des bugs les plus curieux a été découvert dans le système de messagerie d’une université.
Un professeur a remarqué que les e-mails envoyés à des destinataires situés dans un rayon de 500 miles étaient livrés sans problème, alors que les e-mails envoyés à des destinataires plus éloignés n’arrivaient jamais.

Comment cela pouvait-il se produire ?
Après de nombreux maux de tête et l’exploration du code, il s’est avéré que l’erreur provenait d’un paramètre de délai d’attente basé sur une durée permettant aux signaux lumineux de parcourir une certaine distance.
Comme les développeurs avaient utilisé la vitesse de la lumière dans le calcul, cela donnait un « horizon » très réel, bien qu’involontaire, de 500 miles pour la communication par e-mail.
Après avoir ajusté le paramètre de délai d’attente, le bug a été corrigé.

Ce bug est d’ailleurs à l’origine du nom d’une lettre d’information et d’un blog qui ne traitent que des bugs logiciels absurdes.
Cette newsletter, qui mérite d’être lue, s’appelle 500 Mile Email et a été fondée par Harley Hicks.

Le Mars Climate Orbiter

Mars Climate Orbiter est une sonde de la NASA qui a été envoyée sur Mars en 1999 dans le cadre du programme Discovery, mais qui a finalement tout simplement brûlé en raison d’un bug logiciel aussi célèbre que simple.
Cette fin peu glorieuse d’un système hautement technologique pour l’époque a été causée par une simple confusion d’unités : alors que l’équipe de navigation effectuait ses calculs en unités métriques, le logiciel de l’orbiteur utilisait des unités de mesure anglo-américaines.
Il utilisait donc des unités telles que les livres (pour le poids), les pouces et les pieds (pour la longueur) et les gallons (pour le volume), qui différaient des unités métriques telles que les kilogrammes, les mètres et les litres.
Cette divergence a fait que l’orbiteur s’est approché beaucoup plus près de Mars que prévu et a fini par se consumer dans l’atmosphère martienne.

Quelles leçons peut-on en tirer ?
L’incident nous montre qu’il est important de se mettre d’accord sur des normes et des formes de communication communes dans le développement de logiciels et de respecter constamment ces normes sur lesquelles on s’est mis d’accord.

Le bug Pentium FDIV

Un autre exemple extrêmement célèbre est le bug FDIV dans les processeurs Pentium d’Intel au milieu des années 1990.
Ce bug dans l’opération de division en virgule flottante conduisait le processeur à fournir des résultats erronés pour certaines divisions.
Bien que l’erreur ne se soit produite que dans des conditions très spécifiques et que la plupart des utilisateurs ne l’auraient probablement jamais remarquée, l’attention du public qu’elle a suscitée a finalement conduit Intel à lancer une opération de remplacement.
Cet incident a montré l’importance de la précision dans le développement de matériel et la sensibilisation croissante du public aux détails techniques.

L’erreur est d’ailleurs si connue qu’elle fait l’objet d’un article Wikipedia spécifique, que vous pouvez consulter ici.

Le bug du passage à l’an 2000

L’un des bugs les plus célèbres et potentiellement les plus catastrophiques de l’histoire de la technologie a été le bug de l’an 2000, également connu sous le nom de « bug de l’an 2000 ».
Ce bug résultait de la pratique consistant à coder l’année avec seulement deux chiffres dans les systèmes informatiques (par exemple « 99 » pour 1999) afin d’économiser de la mémoire.
Cela a conduit à une crainte répandue que, lors du passage de l’année 1999 à l’année 2000, les systèmes informatiques interprètent l’année « 00 » non pas comme 2000 mais comme 1900, ce qui pourrait conduire à des calculs erronés et à des pannes dans tout, des systèmes bancaires aux commandes de centrales électriques.

Des milliards ont été investis dans le monde entier pour corriger le problème, en mettant à jour les logiciels et en testant les systèmes afin de s’assurer qu’ils pourraient traiter correctement le nouveau millénaire.
Grâce à ces efforts, les effets catastrophiques redoutés ont été largement évités et le bogue du passage à l’an 2000 sert aujourd’hui d’exemple pour rappeler l’importance de la planification prévisionnelle dans le développement de logiciels.

Le bug Heartbleed

Heartbleed était un grave défaut de sécurité dans la bibliothèque logicielle OpenSSL, découvert en avril 2014.
OpenSSL est largement utilisé pour mettre en œuvre les protocoles SSL et TLS pour les communications Internet et fournit un cryptage pour une large gamme de services afin de protéger les données sensibles telles que les mots de passe et les informations personnelles.

Le bug permettait aux attaquants de lire la mémoire des serveurs web et d’accéder ainsi à une grande quantité de données sensibles et confidentielles, et ce sans laisser de traces.
Le plus inquiétant dans ce cas n’était pas seulement la facilité d’exploitation, mais aussi le fait que le bug soit resté totalement indétecté pendant environ deux ans.

Au final, Heartbleed a entraîné une augmentation des investissements dans la sécurité des logiciels open source et une meilleure compréhension de l’importance de la sécurité dans le monde numérique.

Conclusion

Ces anecdotes montrent que les bugs dans le développement de logiciels peuvent parfois prendre des formes bizarres.
Cela devrait nous rappeler que malgré tous les progrès de la technologie, il y a toujours de la place pour des erreurs (d’origine humaine), des négligences et des malentendus qui peuvent avoir des conséquences importantes.
Les histoires de ces bugs ne sont pas seulement amusantes, elles servent également de leçons précieuses sur l’importance de la diligence et de l’examen approfondi des résultats du travail avant leur publication (c’est-à-dire, avant tout, des tests logiciels professionnels).