38
Histoire de bugs

Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Embed Size (px)

Citation preview

Page 1: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Histoire de bugs

Page 2: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Avant-propos

Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction, perte commerciale, etc.) sont rarement dévoilés.

C’est donc par ordre chronologique que je me propose de vous présenter cette « Histoire des bugs célèbres »…

Page 3: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Sommaire

Conclusion

L’après 2000

Les années 80-90

Les années 60-70

Introduction

Page 4: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Introduction

Un bug est une anomalie dans un programme informatique, qui l’empêche de fonctionner correctement.

Les conséquences peuvent être bénignes (comme un défaut d’affichage) à gravissimes (mort d’homme).

Page 5: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Page 6: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1945 : L’Histoire commence

Une panne sur le Mark II de l’US Navy en 1945 fut produite par une mite ayant empêché la fermeture d’un relais.

L’insecte (bug) a été scotché dans le journal de bord de l’ordinateur par Grace Hopper. Il est ainsi connu comme le premier bug…

Thomas Edison…

Page 7: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1962 : La sonde Mariner I

22 juillet 1962 : La fusée qui portait la sonde Vénus Mariner I a dévié de sa trajectoire. Elle a du être détruite en vol.

Cause : un trait d’union oublié dans un programme fortran.

Coûts : Un programme de plus de 80 millions d’euros. Aucune perte humaine

Aurait pu être évité : relecture, test unitaire

Page 8: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1969 : Un grand pas…

20 juillet 1969 : Alors que Neil Armstrong s’apprête à l’alunissage, des alarmes retentissent dans le LEM.

Cause : des aides au debugage “oubliées”.

Coûts : Une grosse frayeur pour Armstrong Aurait pu mener au crash du Lem

Aurait pu être évité : c’est délicat…

Page 9: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1982 : Quand l’arrondi n’a pas la cote

1982 : le Vancouver stock exchange introduit un nouvel indice à la valeur nominale de Mille (1000,000). L'indice est tronqué après la 3ème décimale.

Après 22 mois sa valeur atteint 524,811 alors que la valeur correcte est 1098,811

Cause : erreur d’arrondi Coût : inconnuAurait pu être évité : tests aux limites

Page 10: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1983 : Y a-t-il un frigo dans l’avion ?

Août 1983 : un Boeing 767 de la compagnie United Airlines est congelé lors de son approche de Denver .

Cause : l’ordinateur d’économie de combustible est trop performant, il sur-refroidit les moteurs !

Cause : non révélée Coût : aucune victimeAurait pu être évité : test d’endurance

Page 11: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1984 : Bons baisers de Russie

Décembre 1984 : Un missile de test russe doit atteindre l’Arctique.

Le missile fait une erreur de 180° et frappe Hamburg (Allemagne).

Cause : arithmétiqueCoûts : aucune victimeAurait pu être évité : tests aux limites

Page 12: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1985 : Le bug de la mort qui tue

1985-86 : la machine Therac 25 chargée de traiter des patients atteints du cancer leur a administré une dose mortelle de radiations.

Lorsque le technicien tapait trop vite, le logiciel n’avait pas le temps de suivre et envoyait une très forte dose.

Cause : hardware buffer overflowCoûts : 5 décèsAurait pu être évité : tests de robustesse

Page 13: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1988 : Bank of America, impair et passe

Février 1988 : 28 milliards de dollars transférés sur de mauvais comptes (mauvaises banques).

Seuls 24 milliards sont récupérés !

Cause : « problème hardware »Coûts : supérieur à 4 milliards de $Aurait pu être évité : non, trop forts les

Russes ;)

Page 14: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1990 : Le bug louche

25 avril 1990 : Le télescope spatial Hubble est affligé d'un méchant strabisme.

Cause : un bug dans le programme pilotant la machine de polissage de son miroir (certains contrôles de qualité avaient été supprimés pour réduire les coûts...).

Réparé en décembre 1993 avec le remplacement de la caméra par une caméra spécifique corrigeant l’aberration sphérique du miroir.

Coûts : 500 millions de dollars, soit 1/3 du coût total de l’engin !

Aurait pu être évité : test de Foucault ?

Page 15: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1991 : Fatal retard

25 février 1991 : une batterie de missiles Patriot à Dashran (Arabie Saoudite) échoue dans l'interception d'un Scud. Le scud (vitesse MACH 5) atteint un bâtiment de l'armée et tue 28 américains.

Cause : un bug dans l’arrondi des temps (en 10èmes de seconde); cumulé sur 100 heures.

Coûts : 28 morts Aurait pu être évité : test d’endurance

Page 16: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Heures Secondes Temps calculé (sec) Erreur (sec) Décalage (m)

1 3600 3599,9966 0,0034 7

8 28800 28799,9725 0,0025 55

20 72000 71999,9313 0,0687 137

48 172800 172799,8352 0,1648 330

72 259200 259199,7528 0,2472 494

100 360000 359999,667 0,3433 687

Au delà de 20 heures la batterie est inopérationnelle. Elle a failli après 100 heures…

1991 : Fatal retard (suite)

Page 17: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1991 : Fatal retard (suite)

Page 18: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1991 : Fatal retard (fin)

Page 19: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1993 : Le bug du Pentium

1993 : le tout nouveau processeur d’Intel livre des résultats erronés.

Cause : oubli du transfert d’une table de valeurs précalculées.

Coût pour Intel : 475 millions de $ Aurait pu être évité : intégration ?

Page 20: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1994 : Un hélico capricieux

2 juin 1994 : un hélicoptère chinook de la Royal Air Force, qui transportait des experts irlandais, s’écrase en écosse tuant ses 29 occupants (25 passagers, 4 membres d’équipage).

Cause : On parle d’abord d’une erreur humaine, mais une enquête s’oriente vers le logiciel FADEC.

Page 21: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1994 : Un hélico capricieux (suite)

En 1993 un rapport note que « après avoir examiné seulement 18 pour cent du code 486 anomalies ont été trouvées et la revue arrêtée ».

Le rapport avait également noté que « des défauts moteurs intermittents étaient régulièrement éprouvés par l'équipage du Chinook et il y avait des exemples de pointes non commandées des moteurs vers le haut et vers le bas, ainsi que des mouvements non demandés de commandes de vol ».

Après l’accident des tests montreront que le logiciel FADEC « est invérifiable et … donc incompatible avec son objectif. ».

Page 22: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1996 : Ariane

4 juin 1996 : le lanceur Ariane 5 explose à Kourou (Guyane) lors de son premier vol de qualification.

Ironie du sort : le code qui a planté produisait de l'information utile seulement avant décollage !

Cause : numeric overflowCoût : > 1 milliard de $ Aurait pu être évité : tests d’intégration

Page 23: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1999 : Mars Climate Orbiter

23 septembre 1999 : Mars Climate Orbiter « entre » dans l'atmosphère martienne à seulement 57 km de la surface.

Elle est détruite par les turbulences et les frottements atmosphériques.

Page 24: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1999 : Mars Climate Orbiter (fin)

Cause : données fournies en livre/seconde, attendues en newton/seconde.

Coûts : la sonde seule coûtait 125 millions de $

Aurait pu être évité : spécs, intégration

Heureusement : il reste Mars Polar Lander …

Page 25: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

1999 : Mars Polar Lander

3 décembre 1999 : perte de Mars Polar Lander.

Lors de l’enquête, D. Goldin a démenti que la NASA ait pu cacher des informations sur les défaillances du réacteur de la sonde Mars Polar Lander.

Il a affirmé au contraire que des essais des essais avaient eu lieu en novembre qui avaient eu lieu en novembre qui avaient conduit à une avaient conduit à une reprogrammation sur la sondereprogrammation sur la sonde.

Page 26: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

2001 : Mars Odyssey

7 avril 2001 : La sonde Mars Odyssey a été lancée avec succès.

C'est en effectuant un test sur l'atterrisseur de Mars Surveyor 2001 que l'on a découvert le bug fatal qui aurait coûté la vie à Mars Polar Lander.

Amputée de son atterrisseur, la mission Mars Surveyor 2001 ne comprend donc plus qu'un orbiteur, mais cette amputation lui fut salutaire !

Page 27: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

2005 : Bug politique

21 septembre 2005 : Une trentaine d'habitants de Grenoble ont été réveillés en pleine nuit par un coup de fil d'Alain Carignon, ancien maire de Grenoble et alors président de l'UMP-Isère.

Une opération de marketing téléphonique utilisant la voix d'Alain Carignon, a connu un bug : les personnes absentes en journée ont été rappelées en pleine nuit.

Coût : au moins 37 voix Aurait pu être évité : appeler un numéro

occupé, c’était simple, comme test, non ?

Page 28: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Et pour la bonne bouche…

Page 29: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Sécurité maximum

Page 30: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Ouvert 24h/24, fermé 7j/7

Bug non corrigé à ce jour malgré publication dans SVM de mars !

Page 31: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

L’été sera chaud à Melun

Page 32: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Euh… j’hésite !

Page 33: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Cliquer ou ne pas cliquer ?

Page 34: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Quel avenir pour le bug ?

Et demain ?Et demain ?

2000

1990

1980

1970

Page 35: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Conclusion

Les projets les plus sérieux laissent encore passer les bugs les plus stupides.

La technologie ne cesse de se complexifier. On ne peut donc compter que sur un progrès des tests…

Page 36: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Des questions ?

Page 37: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,

Laurent BOCQUET, CNAM 2007

Proposition de

Questions pour l’examen

Qu’est-ce qu’un bug ?

Citer 2 types de bug fréquents

Page 38: Histoire de bugs. Laurent BOCQUET, CNAM 2007 Avant-propos Le type de bug (buffer overflow, division par zéro, etc.) et ses coûts (perte sèche, correction,