Um bug difícil de detectar fez com que um desenvolvedor desse boot no sistema operacional Linux nada menos que 292.612 vezes. O bug trava o processo de inicialização apenas uma vez em cerca de 1.000 inicializações. Portanto, um desenvolvedor inicializa o Linux 292.612 vezes para encontrar bug no kernel.
O desenvolvedor do Red Hat Linux, Richard WM Jones, compartilhou uma história surpreendente sobre a caça de bugs do Linux. Jones notou que o Linux 6.4 tem um bug que travará na inicialização pelo menos uma em 1.000 vezes. Assim, Jones decidiu localizar o bug e provar que o havia pego em flagrante. No entanto, seu trabalho envolveu a inicialização do Linux 292.612 vezes (e outras 1.000 vezes para confirmar o bug), aparentemente “levou apenas 21 horas”. Também parece que o bug é menos comum com hardware Intel do que com máquinas baseadas em AMD.
Desenvolvedor inicializa o Linux 292.612 vezes para encontrar bug no kernel
Jones percebeu pela primeira vez esse erro de inicialização do Linux indescritível, mas replicável, quando alguns testes de software de servidor com nbdkit (um protocolo para acessar dispositivos de bloco em uma rede) pareciam estar “pendurados aleatoriamente” quando usados ??com libguestsfs (uma ferramenta para acessar e modificar máquinas virtuais imagens de disco.) Embora saibamos que a fase de teste de loop durou apenas 21 horas (mesmo que houvesse um número astronômico de 293.612 processos de inicialização iniciados), Jones diz que chegar a esse ponto “demorou muitos dias”. O desenvolvedor do Linux relata que uma bisseção dolorosa entre o Linux v6.0 e v6.4-rc6 o ajudou a reduzir o culpado pelo travamento da inicialização. Esse culpado é considerado uma regressão no recurso de tempo de impressão. Reverter este commit de código “corrige o problema”.
Uma pista para a causa era que o bug sempre aparecia no mesmo estágio inicial do processo de inicialização, ao inicializar o último qemu. Se você seguir este link, verá que a maneira mais fácil de replicar o problema de travamento é executar um comando guestfish em um loop, com muitas instâncias em paralelo, analisando a saída para detectar quando houve um evento de travamento de inicialização. Normalmente, ele executou o loop guestfish 10.000 vezes, como um limite viável para coletar dados de log úteis.
Talvez para alguns fãs de hardware interessados, Jones comenta que esse estranho problema de travamento de inicialização ocorre com menos frequência em sistemas Intel do que em sistemas AMD. Seja qual for o caso, esperamos que a exposição e identificação desse bug signifique que ele será eliminado, para nunca mais retornar.