O bug do Word 97 que sumia quando os desenvolvedores olhavam

Resumo
- O Word 97 enfrentou um “Heisenbug” crítico na reta final de seu lançamento, o qual sumia toda vez que os desenvolvedores tentavam analisá-lo com um depurador.
- A origem do problema estava em uma falha de hardware de um fabricante específico de processadores, e não diretamente no software.
- A solução encontrada foi aplicar um patch no binário do Word, corrigindo a sequência específica de instruções que causava o bug, sem precisar atualizar o compilador.
Raymond Chen é um veterano programador da Microsoft que conta histórias de bastidores da companhia há anos. A mais recente envolve o Word 97: esta clássica versão do editor de textos tinha um bug crítico que simplesmente sumia quando era investigado, deixando os desenvolvedores confusos. Havia uma razão para isso: a falha era relacionada a um hardware.
De acordo com Chen, o problema causava um “crash” sério e foi identificado um pouco antes do lançamento oficial do Office 97.
Os desenvolvedores da Microsoft conseguiam reproduzir a falha por meio da execução de um script escrito especificamente para isso. Porém, na etapa seguinte, quando um depurador (debugger) era executado para identificar exatamente o ponto problemático do código-fonte, o bug não se manifestava.
Entre os desenvolvedores, esse tipo de situação tem até nome: “Heisenbug”, uma referência ao físico Werner Heisenberg, que em pesquisas sobre mecânica quântica descreveu que o ato de observar um sistema pode alterar o seu estado (aqui, o ato de observar o bug pode alterar as condições que o fazem surgir).
Como o problema não existia quando o bug era investigado (de novo, durante a depuração de código), os desenvolvedores da Microsoft discutiam abordagens possíveis até alguém sugerir o uso de um ICE (In-Circuit Emulator), equipamento que permite que o comportamento de um processador seja emulado e analisado cuidadosamente.
Chen chegou a comparar o ânimo dos desenvolvedores com a possibilidade de usar um ICE ao “de um menino de cinco anos que descobre que pode andar em um caminhão dos bombeiros”.

Um problema de hardware
Mas o equipamento acabou não sendo realmente necessário. Os desenvolvedores da Microsoft perceberam que a maioria dos computadores que apresentava o bug vinha de um único fabricante. Investigando esse aspecto com mais cuidado, eles descobriram que um defeito já conhecido no projeto do processador dessas máquinas causava a falha.
A boa notícia é que já existia uma versão atualizada do compilador usado no Word 97 capaz de evitar a tal falha. A má é que atualizar o compilador naquele momento poderia introduzir novos e proibitivos bugs no Word 97.
Os desenvolvedores tiveram então que procurar a sequência de instruções problemática no executável já compilado. Foi um trabalho complicado, pois cerca de 150 ocorrências possivelmente “culpadas” foram encontradas.
No fim das contas, eles descobriram que apenas uma delas extrapolava o limite da página de memória que causava o problema. Um patch aplicado diretamente no binário resolveu o bug. Final conturbado, mas feliz.
O bug do Word 97 que sumia quando os desenvolvedores olhavam