Exemplos Históricos: quando o software falha, a vida é que paga
O valor “Software sem bug mais que software em funcionamento” não é hipérbole. Abaixo, casos documentados em que bugs de software custaram vidas, bilhões de dólares, ou quase alteraram o curso da história.
Therac-25 — a máquina de radioterapia que matou (1985–1987)
A máquina Therac-25 era um acelerador linear de radioterapia da AECL. Para cortar custos, a fabricante removeu as travas físicas de segurança e passou a confiar exclusivamente em software para impedir overdoses.
O software tinha race conditions e um flag de segurança que, ao ser incrementado em vez de setado, estourava o limite e zerava a checagem. Resultado: o feixe de 25 MeV atingia o paciente sem o alvo de tungstênio — uma dose ~100 a 250 vezes maior que a prescrita.
- Consequências: pelo menos 6 overdoses; 3 mortes confirmadas.
- Lição: confiar cegamente em software de segurança, sem redundância de hardware, transformou uma máquina que cura câncer em uma que matou.
Boeing 737 MAX / MCAS — 346 mortes (2018–2019)
O software MCAS comandava mergulhos automáticos baseado em um único sensor de ângulo de ataque. A Boeing omitiu o MCAS dos manuais e do treinamento dos pilotos.
- Consequências: 346 mortes. Frota mundial parada por 20 meses.
- Lição: um software de controle de voo escondido dos pilotos derrubou dois aviões.
Mísseis Patriot em Dhahran — 28 mortes (1991)
O bug: o relógio do sistema contava tempo em décimos de segundo; o erro de arredondamento se acumulava. Após ~100 horas, o gate de timing estava atrasado ~0,34 segundos.
- Consequências: 28 soldados americanos mortos.
- Lição: um erro de arredondamento que crescia silenciosamente custou 28 vidas.
Ariane 5 Voo 501 — US$ 370 milhões em 37 segundos (1996)
O bug: código reutilizado do Ariane 4; um valor estourou ao converter float 64-bit → inteiro 16-bit.
- Consequências: perda de >US$ 370 milhões.
- Lição: reuso de software “testado” noutro contexto pode ser fatal.
Knight Capital — US$ 440 milhões em 45 minutos (2012)
Um técnico esqueceu de copiar o novo código para 1 dos 8 servidores. O código morto reanimou e disparou ordens indefinidamente.
- Consequências: Prejuízo de US$ 440 milhões; empresa forçada a fusão.
- Lição: esquecer de atualizar 1 servidor em 8 destruiu uma empresa de US$ 1,5 bilhão em menos de 1 hora.