- Un nouveau propriétaire de Pontiac s’est plaint auprès de la division Pontiac de General Motors que sa voiture refusait de démarrer le soir uniquement lorsqu’il achetait de la glace à la vanille
- Le président de Pontiac a douté de la lettre, mais a envoyé un ingénieur, et sur place l’échec du démarrage après l’achat de vanille a bien pu être reproduit
- Les jours où il achetait du chocolat ou de la fraise, la voiture démarrait, mais les jours où il achetait de la vanille, elle retombait en panne, confirmant à plusieurs reprises cette condition apparemment absurde
- En notant l’heure, le type de carburant, la durée de l’aller-retour et le temps d’achat, l’ingénieur a découvert une différence de parcours : seule la vanille pouvait être achetée rapidement dans un réfrigérateur séparé à l’entrée du magasin
- La cause n’était pas le parfum de glace, mais un vapor lock dû à un temps d’achat trop court, qui ne laissait pas au moteur le temps de refroidir suffisamment ; même un signalement étrange doit être vérifié par l’observation et la reproduction
L’étrange problème de démarrage de la Pontiac
- Un propriétaire de Pontiac a envoyé une deuxième lettre à la division Pontiac de General Motors
- Chaque soir, sa famille votait pour choisir le parfum de glace du dessert après le dîner, et il prenait la voiture pour aller en acheter
- Après l’achat de sa nouvelle Pontiac, un problème ne se répétait que dans une condition précise
- Lorsqu’il achetait de la glace à la vanille, il ne pouvait plus redémarrer la voiture en revenant du magasin
- Lorsqu’il achetait un autre parfum, la voiture démarrait normalement
- Tout en reconnaissant que sa question pouvait sembler stupide, il demandait pourquoi sa Pontiac refusait de démarrer uniquement lorsqu’il achetait de la vanille
Vérification sur place et reproduction répétée
- Le président de Pontiac a accueilli la lettre avec scepticisme, mais a envoyé un ingénieur pour vérifier directement
- L’ingénieur a retrouvé le propriétaire juste après le dîner et l’a accompagné jusqu’au magasin de glaces
- Ce jour-là, c’était vanille, et lorsqu’ils sont revenus à la voiture, elle ne démarrait effectivement pas
- Au cours des trois jours suivants, les essais en faisant varier les conditions ont donné des résultats nets
- Le premier jour, avec du chocolat, la voiture a démarré
- Le deuxième jour, avec de la fraise, elle a aussi démarré
- Le troisième jour, avec de la vanille, elle a de nouveau refusé de démarrer
L’indice trouvé dans les observations consignées
- L’ingénieur n’a pas accepté l’idée que la voiture soit allergique à la glace à la vanille
- Il a décidé de poursuivre les visites jusqu’à résoudre le problème et a consigné plusieurs données
- l’heure
- le type de carburant utilisé
- la durée de l’aller-retour jusqu’au magasin
- le temps nécessaire pour effectuer l’achat
- L’indice décisif était que le temps d’achat de la vanille était plus court que pour les autres parfums
- L’agencement du magasin créait cette différence de temps
- La vanille, parfum le plus populaire, se trouvait dans un réfrigérateur séparé à l’avant du magasin pour pouvoir être prise rapidement
- Les autres parfums étaient au fond du magasin, à un autre comptoir, ce qui demandait bien plus de temps pour choisir et payer
La vraie cause : le vapor lock
- Le cœur du problème n’était pas le parfum de glace, mais le temps d’attente trop court
- Une fois que l’ingénieur a compris que le temps était en cause, il a identifié le vapor lock comme origine du problème
- Le vapor lock se produisait tous les jours, mais lorsqu’il achetait d’autres parfums, le temps d’achat plus long permettait au moteur de suffisamment refroidir pour redémarrer
- Lorsqu’il achetait de la vanille, l’achat était trop rapide, le moteur était encore chaud et le vapor lock n’avait pas disparu, empêchant le démarrage
Leçon
- Même lorsqu’un problème semble absurde à première vue, les faits observés peuvent être réels
- Même si un symptôme paraît invraisemblable, en vérifiant les conditions à plusieurs reprises et en collectant des données, on peut trouver la véritable cause
1 commentaires
Avis sur Hacker News
À la fin des années 90, j’ai eu quelque chose de similaire au travail. La souris d’un employé se bloquait seulement à certaines heures de la journée : elle fonctionnait le matin, ne marchait plus vers midi, puis se remettait à fonctionner plus tard.
L’indice décisif, c’est que les jours couverts elle fonctionnait correctement toute la journée, alors que les jours ensoleillés le même comportement étrange se répétait. Il s’est avéré que le boîtier en plastique d’une souris à boule bon marché était trop fin : les jours de beau temps, la lumière du soleil saturait les capteurs des axes X/Y bien plus que la LED, et elle ne refonctionnait normalement qu’une fois que le soleil avait bougé et créé de l’ombre. Au début, cela semblait absurde, mais la cause était parfaitement logique.
Certaines versions du jailbreak Pangu pour iOS 7.1.x semblaient planter au démarrage lorsque la valeur du capteur de luminosité ambiante était inférieure à un certain seuil. La cause exacte reste inconnue, mais il semble que Pangu contenait du code inutile qui touchait au capteur de luminosité [1].
[1] https://www.reddit.com/r/jailbreak/comments/294wob/jailbreak...
[2] https://www.reddit.com/294wob/
Après avoir vérifié toutes sortes de causes, on s’est rendu compte que le problème ne survenait pas quand il pleuvait, mais lorsqu’il y avait un brouillard dense ou de la bruine. D’après le technicien du câblo-opérateur, tout allait bien à l’intérieur de la maison, mais le câble venant de la ligne principale jusqu’à la maison avait une toute petite entaille, par laquelle l’humidité ambiante s’infiltrait et dégradait la connexion.
Quand le bac à glace est plein, un faisceau infrarouge doit être interrompu pour arrêter la fabrication, mais les jours de beau temps, la forte luminosité de la cuisine trompe le capteur et la pousse à continuer à produire des glaçons. Du coup, on pose un magazine quelconque dessus pour qu’elle fonctionne correctement.
Un jour, des tests liés à une application cliente graphique X se sont soudainement mis à échouer de manière intermittente, sans qu’on puisse les reproduire dans d’autres conditions. Il s’est avéré que les jobs de CI tournaient sur des machines de bureau placées quelque part dans l’entreprise, et que quelqu’un avait branché une souris sur l’une d’elles avant de la laisser sur une étagère. Quand la charge de la machine augmentait, les ventilateurs accéléraient, les vibrations augmentaient, la souris bougeait très légèrement et, pour une raison inconnue, cela avait des effets de bord sur les tests. J’étais assez fier d’avoir diagnostiqué ça en SSH sur une machine qui n’était même pas sur place.
Il s’est avéré que les panneaux solaires, ou bien l’optimiseur ou l’onduleur, émettaient une fréquence radio qui interférait avec la télécommande de la porte de garage. Quand il y avait du soleil et que le système produisait de l’électricité, l’interférence devenait plus forte que l’ouvre-porte de garage Homelink. Il y a quelques années, l’ouvre-porte de garage s’est soudainement remis à bien fonctionner, et j’ai compris quelques jours plus tard que c’était parce que l’onduleur était tombé en panne. Selon les règles de la FCC, l’installateur devrait peut-être réparer ça, mais comme les relations s’étaient dégradées lors de l’installation, j’ai estimé qu’il valait mieux renoncer à la télécommande plutôt que d’avoir affaire à eux pour une réparation sous garantie.
Une anecdote amusante entendue de l’époque où il y avait des salles serveurs. Le serveur de l’entreprise d’un ami redémarrait tous les jours vers 17 h, et même après avoir vérifié tout ce qui était possible côté système d’exploitation, impossible d’en trouver la cause.
Finalement, quelqu’un a décidé de se poster devant le serveur à cette heure-là, et a vu la personne chargée du ménage entrer dans la pièce, débrancher l’alimentation du rack serveur, brancher l’aspirateur pour nettoyer, puis rebrancher le rack serveur.
Certaines caméras redémarraient presque tous les jours à la même heure, pas exactement à la même seconde, mais avec un motif net : un jour à 19:12:10, le lendemain deux secondes plus tard, puis encore deux secondes plus tard. Il s’est avéré qu’au coucher du soleil, un élément de mobilier urbain projetait une ombre devant la caméra, et le logiciel la prenait à tort pour un véhicule et commençait à accumuler des informations de classification. Comme l’ombre se déplaçait bien plus lentement qu’un vrai véhicule, la mémoire s’épuisait avant qu’elle ne sorte du cadre ; le système se bloquait, puis le watchdog le redémarrait. Le motif horaire venait du fait que l’angle du soleil changeait chaque jour, si bien que l’ombre trompait l’algorithme un peu plus tard à chaque fois.
[0] https://old.reddit.com/r/talesfromtechsupport/comments/5yrs1...
[1] https://www.goodreads.com/book/show/3227607-the-devouring-fu...
Je me suis assis là pendant une semaine à cet horaire et j’ai vu les lumières baisser puis le redémarrage se produire. L’avocat du bureau voisin arrivait, allumait en même temps son PC, son imprimante et sa cafetière sur la même multiprise, et le courant d’appel faisait chuter la tension du circuit auquel le serveur était raccordé. Il y avait un onduleur, mais les onduleurs grand public de l’époque ne géraient que les coupures ; nous avons mesuré une chute jusqu’à 85 V, et en pratique le serveur redémarrait sous 95 V.
C’était un vendredi en début d’après-midi, il faisait chaud et humide et un orage approchait ; vers 16 h, le responsable est venu me dire de me dépêcher parce qu’à 17 h ils coupaient l’électricité de tout le bâtiment. Ils coupaient le courant tous les vendredis pour économiser l’énergie, et, comme par hasard, un nettoyage de la base était planifié tous les vendredis à 16 h 30. J’ai donc corrigé le problème dans l’heure restante, annulé la tâche de la semaine, puis arrêté manuellement le serveur de base de données. Chaque semaine, ils coupaient l’alimentation de force, provoquant un incident de production sur le serveur Netware et le serveur de base de données du logiciel d’encaissement, et, conformément au contrat de maintenance, c’était à nous de réparer à chaque fois. Au bout d’environ un mois, ils ont finalement repoussé la coupure forcée au samedi matin, afin que les serveurs puissent s’arrêter correctement après la fin des sauvegardes.
Cela me rappelle un monospace GM que conduisait mon beau-frère dans les années 80. C’était une voiture que lui avait donnée mon beau-père, ingénieur automobile chez GM, et parfois, de manière aléatoire, elle refusait de démarrer et tout le système électrique semblait mort.
Comme mon beau-frère était considéré comme quelqu’un qui ne connaissait pas grand-chose aux voitures, mon beau-père ne prenait pas ses plaintes au sérieux. Ils ont finalement décidé d’échanger leurs voitures pendant un mois ; le problème s’est reproduit sur le parking du GM Technical Center, et même les ingénieurs de GM rassemblés autour n’ont pas réussi à comprendre pourquoi le système électrique semblait mort, ce qui a lavé mon beau-frère de tout soupçon.
Quelques heures plus tard, elle démarrait comme si de rien n’était, si bien que le centre de service ne pouvait pas diagnostiquer le problème. Plus tard, elle a aussi refusé de démarrer pendant du camping en tout-terrain, ce qui a commencé à affecter ma vie quotidienne ; finalement, alors qu’elle ne démarrait pas dans l’allée de la maison, je l’ai fait remorquer chez un garagiste indépendant, où le problème s’est reproduit. Le mécanicien a proposé soit de remplacer le module ECU, soit de remplacer la boîte à fusibles elle-même ; l’ECU coûtait plusieurs milliers de dollars, mais le remplacement de la boîte à fusibles revenait à moins de 200 dollars, main-d’œuvre comprise, alors j’ai choisi cette option. Six ou sept ans plus tard, cette voiture reste ma principale et unique voiture, et elle n’a plus eu le moindre problème mécanique depuis.
Il est tout à fait plausible que les véhicules GM de cette période tristement célèbre aient souffert de problèmes électriques mystérieux à rendre fou.
Je suppose qu’un relais surchauffait quelque part et restait collé en position fermée, mais je n’ai jamais pu le déboguer moi-même, et mon cousin mécanicien automobile n’a pas trouvé non plus. Je n’ai pas trop insisté : quand cela arrivait, j’enlevais le fusible et je le remettais le lendemain matin.
Le démarreur tournait souvent correctement, mais l’électronique se retrouvait parfois coincée dans un état étrange, et il fallait débrancher la batterie pour faire un hard reset afin d’en sortir.
Dans une ancienne maison, j’ai vécu un phénomène étrange et récurrent lié à l’électronique. À minuit, un jour précis de la semaine, un son très faible semblait provenir d’appareils électroniques fixes, comme l’enregistrement d’un discours politique de la Seconde Guerre mondiale.
Le son était trop faible pour en localiser la source, et les paroles étaient incompréhensibles, si bien qu’on aurait dit qu’un vieil enregistrement était diffusé de partout en même temps. Ça continuait même en débranchant les appareils, et même pendant une coupure de courant dans la maison. Je pensais devenir fou, ou que la maison était hantée par le fantôme d’Hitler, puis j’ai fini par comprendre en entendant quelque chose de similaire sur l’autoradio. Une station de radio AM catholique commençait à émettre le même jour, à la même heure, avec des chants grégoriens et des sermons, et le câblage de la maison se comportait d’une manière ou d’une autre comme un récepteur radio AM : certains composants vibraient en restituant l’audio porté par le signal radio.
Chaque fois que mon fils jouait à American Truck Simulator, l’écran de son ordinateur portable s’éteignait, et pendant que l’écran était noir, le camion sortait de la route.
Quand je jouais sur le même portable, ça n’arrivait pas, donc mon fils était persuadé d’être maudit. Après plusieurs jours à voir le problème se répéter, je l’ai observé jouer à côté de moi et j’ai remarqué que le bracelet de sa montre était un bracelet métallique à fermoir magnétique. La position de son poignet déclenchait le capteur à effet Hall de l’ordinateur portable, qui croyait que le capot était fermé. Mon fils, ma femme et moi avons tous été soulagés d’apprendre qu’il n’était pas maudit.
https://www.ifixit.com/News/33952/apple-put-a-hinge-sensor-i...
Ce sont ces histoires qui rendaient Car Talk si amusant. Ce n’étaient pas simplement des mécaniciens qui réparaient des voitures : les situations étaient tellement bizarres et particulières qu’elles devenaient passionnantes.
C’était aussi très drôle d’entendre des mécaniciens expérimentés, qui avaient vu tellement de cas étranges qu’ils les prenaient presque comme des choses ordinaires ; en plus, ils étaient d’excellents conteurs.
La leçon n’est pas tant « les problèmes qui semblent absurdes sont parfois réels » ; pour moi, c’est plutôt : le problème de l’utilisateur existe généralement bel et bien, mais ne te fie pas à sa capacité à en diagnostiquer la cause.
La lettre ne prétendait pas que la glace était la cause fondamentale, et indiquait très clairement qu’il s’agissait de la cause immédiate. Le président de Pontiac et la personne qui a formulé cette « leçon » ont peut-être confondu les deux, mais pas l’ingénieur qui a enquêté.
Pour avoir aussi fait du support pendant mon travail de développement, les utilisateurs attribuent facilement n’importe quel fait arbitraire à la cause du problème. Des heuristiques comme « corrélation vaut causalité » ou post hoc ergo propter hoc peuvent être utiles, mais elles deviennent mauvaises si elles remplacent le raisonnement. Comme les utilisateurs ne savent pas comment fonctionnent les objets qu’ils utilisent, il leur est difficile de poser un bon diagnostic, et ceux qui pensent « s’y connaître un peu » sont souvent les plus difficiles à gérer.
La voiture de ma femme manque actuellement de liquide lave-glace, mais l’alerte ne s’affiche qu’à un endroit précis pendant qu’elle conduit. Ce n’est pas à une certaine distance de la maison, c’est un emplacement exact.
Au début, j’ai pensé que c’était lié au temps écoulé sur le trajet aller-retour, mais que nous ayons roulé 5 minutes, 5 miles, 1 heure ou 60 miles avant d’y arriver, l’alerte visuelle et sonore se déclenche toujours à cet endroit. Le seul indice supplémentaire est que cet endroit est une zone blanche pour la plupart des téléphones et opérateurs. En remplissant le lave-glace, le mystère est entré en hibernation, mais je me demande si toutes les alertes se déclenchent là-bas. On dirait que la télémétrie de la voiture y est perturbée, se réveille et se met à dire quelque chose.
Cela pourrait produire une interférence assez étrange pour faire basculer le capteur de « assez de liquide » à « niveau bas ».
C’est simplement le liquide qui se déplace dans le réservoir. Aujourd’hui, j’ai nettoyé un peu le pare-brise pour que la voiture garde enfin le voyant de niveau bas allumé.
Une nuit, dans le labo d’informatique, alors que je travaillais sur un devoir en Java, le professeur responsable est passé et a dit : « Ah, sur cette machine-là, il va falloir compter sur la chance. »
Cette machine, à une époque, refusait d’exécuter le moindre programme Java et mourait de façon spectaculaire, alors que C++ ou Python ne posaient pas de problème. Même le programme du professeur, qui n’y croyait pas au début, a fait crasher cette machine. Après environ deux semaines de vérifications par un technicien et le professeur, ils ont découvert qu’à chaque démarrage, la JVM allouait l’entier 12 à la même adresse RAM, et que la puce RAM contenant cette adresse matérielle était défectueuse. À chaque tentative d’allocation à cette adresse, ça crashait, et le remplacement de la barrette RAM défectueuse a immédiatement résolu le problème.
https://marcan.st/2017/12/debugging-an-evil-go-runtime-bug/
Je ne vais pas spoiler la conclusion. C’est un long parcours de débogage plein de détours, qui vaut la lecture. Discussion HN :
https://news.ycombinator.com/item?id=15845118
Cette histoire est un exemple amusant de variable de confusion.
En inférence causale, une variable de confusion est une variable qui influence à la fois la variable dépendante et la variable indépendante, créant une fausse association. C’est une notion causale qui ne peut pas être expliquée par la seule corrélation, et l’une des raisons quantitatives importantes derrière « corrélation n’implique pas causalité ».
https://en.wikipedia.org/wiki/Confounding
Sous forme de modèle statistique, on peut voir cela comme
S = f(H, I, T).Sindique si la voiture démarre ou non,Hla température du moteur,Ile parfum de glace choisi, etTle temps nécessaire pour acheter la glace. SiTest court, le moteur reste plus chaud et devient plus vulnérable au vapor lock, ce qui influenceS, tandis que l’emplacement de la glace à la vanille permet de l’acheter rapidement, ce qui la relie aussi àI. Cela crée donc une fausse relation entreIetS.Iqui influenceT, et nonTqui influenceI? C’est le parfum de glace qui détermine le temps passé dans le magasin.