Le développeur de Red Hat Linux, Richard WM Jones, a partagé une histoire surprenante sur la chasse aux bogues Linux. Jones a remarqué que Linux 6.4 a un bogue qui signifie qu’il se bloque au démarrage environ 1 fois sur 1 000. Jones a entrepris de localiser le bogue et de prouver qu’il l’avait attrapé en flagrant délit. Cependant, son travail en tête d’affiche, impliquant le démarrage de Linux 292 612 fois (et 1 000 autres fois pour confirmer le bogue) « n’a apparemment pris que 21 heures ». Il semble également que le bogue soit moins courant avec le matériel Intel qu’avec les machines basées sur AMD.
Jones a eu la première bouffée de ce bogue de démarrage Linux insaisissable mais reproductible lorsque certains tests de logiciels de serveur avec nbdkit (un protocole d’accès aux périphériques de bloc sur un réseau) semblaient être « suspendus au hasard » lorsqu’ils étaient utilisés avec libguestsfs (un outil pour accéder et modifier la machine virtuelle images de disque.) Bien que nous sachions que la phase de test en boucle a duré 21 heures (même s’il y a eu 293 612 processus de démarrage astronomiques), Jones dit qu’arriver à ce point « a pris plusieurs jours ». Le développeur Linux raconte qu’une bissection douloureuse entre Linux v6.0 et v6.4-rc6 l’a aidé à réduire le coupable du blocage du démarrage. Ce coupable est prétendu être une régression dans la fonction de temps printk. L’annulation de ce commit de code « résout le problème », affirme Jones.
Un indice de la cause était que le bogue apparaissait toujours au même stade précoce du processus de démarrage, lors du démarrage du dernier qemu. Si vous suivez ce lien, vous verrez que le moyen le plus simple de reproduire le problème de blocage consiste à exécuter une commande guestfish dans une boucle, avec de nombreuses instances en parallèle, en analysant la sortie pour détecter le moment où un événement de blocage de démarrage s’est produit. Habituellement, il exécutait la boucle guestfish 10 000 fois, comme seuil réalisable pour collecter des données de journal utiles.
Peut-être de certains intéressés par les fans de matériel, Jones remarque que ce problème de blocage de démarrage étrange se produit moins souvent sur les systèmes Intel que sur les systèmes AMD. Quoi qu’il en soit, j’espère que l’exposition et la localisation de ce bogue signifient qu’il sera écrasé, pour ne jamais revenir.