Há cerca de 40 anos, um erro de software foi o principal responsável pela morte de pacientes que utilizavam o Therac-25, uma máquina de radioterapia desenvolvida para o tratamento de cancro. O equipamento tinha dois modos de operação: feixe de eletrões, usado para tratar tecidos superficiais como a pele; e feixe de raios-X de alta energia, destinado a atingir tumores mais profundos. Diferente de versões anteriores, o Therac-25 foi projetado com controlos via software, deixando de lado várias proteções físicas de segurança.
O problema em questão, residia numa falha de programação que envolvia uma condição de corrida: quando o operador inseria comandos muito rapidamente, a lógica do software podia ignorar etapas de verificação e libertar radiação de forma completamente descontrolada. Como a máquina levava alguns segundos para alternar de modo, essa rapidez na operação criava uma falha perigosa, resultando assim numa projeção de doses até 100 vezes mais fortes do que o recomendado, levando a queimaduras internas graves e, em vários casos, à morte.
Entre 1985 e 1987 foram documentados seis incidentes, três deles fatais. Alguns destes pacientes receberam quantidades massivas de radiação numa questão de segundos, e acabariam por falecer dias depois. O caso ficou famoso por mostrar como falhas invisíveis no software podem ter consequências devastadoras quando os sistemas críticos não contam com redundâncias físicas.
O desastre do Therac-25 serviu como marco na história da engenharia de software e na área de dispositivos médicos, levando também a mudanças importantes nas exigências de testes, documentação e validação formal de programas usados em contextos de segurança crítica.
O artigo original via Tom’s Hardware aqui.