THERAC-25: O PIOR erro de SOFTWARE da HISTÓRIA

959.38k views3078 WordsCopy TextShare
Ciência Todo Dia
Entre 1985 e 1987, uma máquina hospitalar conhecida como Therac-25 foi a responsável por 6 acidentes...
Video Transcript:
Eu quero começar o vídeo com uma pergunta. Quantas coisas na sua vida você depende diretamente de máquinas para fazer? Quando você precisa acordar cedo, você talvez use o seu celular ou algum outro dispositivo eletrônico para te acordar.
O que você faz sem saber é criar uma condição no software do seu despertador que se parece algo com isso. Se o horário for X horas, um alarme será disparado. E existe uma chance, mesmo que pequena, de um problema acontecer.
Quem sabe um bug afete o software do despertador e o seu alarme não vai ser disparado. Tenta explicar isso pro seu chefe. Boa sorte.
Esse é um exemplo muito simples e antigo de como nós somos dependentes de máquinas no nosso dia a dia. Até um relógio antigo daqueles programados manualmente pode falhar. Nada tá a salvo.
E com o tempo as coisas deixaram de ser manuais e as máquinas começaram a ganhar uma outra espécie de automatização: os softwares. E hoje em dia, com o avanço de algoritmos de inteligências artificiais, essa automatização está cada vez mais presente na nossa vida. As músicas que você escuta, os vídeos que você assiste ou até mesmo as pesquisas que você faz dependem quase que diretamente de uma inteligência artificial que pode ser considerada um software que automatiza.
Usando um exemplo recente, o ChatGPT. Nesse ponto da história, você provavelmente já escutou que a gente tem que tomar cuidado com as respostas que o ChatGPT dá, porque ela nem sempre é informação correta. Existem diversas notícias ao redor do mundo de alunos de faculdade que fizeram trabalhos usando o ChatGPT sem conferir as fontes e acabaram recebendo uma nota baixa ou até reprovando por causa disso.
Mas por que eu tô falando disso tudo? Isso mostra que nós não devemos confiar 100% nas máquinas, mesmo que elas sejam extremamente úteis na maior parte do tempo. E pra ser justo, isso também vale para humanos.
Falhas humanas são até mais comuns do que a falha das máquinas. O ponto aqui é a conclusão errada que muitos de nós temos de que máquinas são perfeitas e imunes a erros. E que por errarem menos, então nós podemos confiar cegamente nelas.
Alguns erros, como um despertador não tocando de manhã, podem ser pequenos. Mas outros erros podem ser muito mais catastróficos e levar até mesmo a desastres com perdas irreparáveis, como é o caso do considerado pior erro de software na história, o Therac-25. O Therac-25 foi uma máquina de radioterapia desenvolvida pela Atomic Energy of Canada Limited, ou AECL, e começou a ser comercializada em 1982.
A máquina foi responsável por seis acidentes que levaram a lesões graves e algumas até fatais de pessoas. E todos os acidentes estão associados a um bug que aconteceu no software da máquina que antes era considerada extremamente segura pela empresa. Mas antes que você ache estúpida a ideia de usar a máquina junto com radiação, deixa eu contar uma breve história da radioterapia.
Só antes de conhecermos mais sobre o pior bug de software da história, que tal ouvir sobre uma oportunidade de aprender habilidades novas e quem sabe programar melhor? Eu pergunto isso porque a Alura está com 15% de desconto para quem assiste o Ciência Todo Dia. A Alura é a maior escola online de tecnologia e são mais de 1.
400 cursos que você pode fazer com uma única assinatura. Então entre no site alura. tv/cienciatododia e escolha algum curso de algo que você gostaria muito de aprender, mas nunca tirou tempo.
Se eu fosse recomendar algum, eu recomendaria qualquer um da escola de inteligência artificial. Vale a pena. E agora, de volta ao vídeo, vamos começar com uma breve história da radioterapia.
A ideia do uso de radiação para tratar condições médicas não é nova. Ela vem do final do século XIX. O primeiro uso registrado de radiação foi apenas três dias depois do anúncio da descoberta dos raios-x, que foi feita pelo físico alemão Röntgen, em 1895.
O químico e médico Émile Grubbé ficou extremamente interessado pelo trabalho do Röntgen, e ele se utilizou como cobaia, tirando imagens de raio-x da sua própria mão. E na época, o Grubbé não imaginava que raios-x poderiam ser perigosos em doses altas e frequentes. Quando ele visitou médicos, porque a mão dele estava ficando lesionada, um deles, chamado J.
E. Gilman, percebeu que se algo pudesse danificar tecidos saudáveis daquela forma, talvez pudesse danificar e tratar tecidos indesejáveis, como tumores e lesões. Um dos médicos que estava na ocasião era Reuben Ludlam, e ele cuidava de pacientes com câncer de mama.
Ludlam e Grubbé, então, iniciaram o tratamento usando o raio-x. E por muitas pessoas, essa é conhecida como a primeira vez em que a radiação foi usada como tratamento, dando início à radioterapia. Infelizmente, os primeiros casos não deram certo, mas isso não impediu que a pesquisa do uso de radiação como tratamento ao redor do mundo continuasse.
Logo depois, em 1898, Marie Curie, junto com seu marido Pierre Curie, descobriram o rádio e o fenômeno da radioatividade. E não demorou muito para que também fosse levantada a ideia de que isso pudesse ser usado como radioterapia. Por décadas, físicos, químicos e médicos aprofundaram cada vez mais a pesquisa do uso de radiação para tratamento de diferentes doenças, principalmente tumores.
E em diversos casos, até hoje, tem se mostrado como um tratamento que funciona. E é aqui que nós chegamos em 1970, quando a radioterapia já era usada como tratamento tradicional e bastante comum. O tratamento podia ser dividido em dois tipos, radiação de elétrons e radiação de raios-x.
Um era usado para atingir partes mais internas do corpo, e dessa forma tratar lesões em órgãos internos, enquanto o outro era usado para lesões externas, como as da pele. Então, era comum a necessidade de duas máquinas para diferentes tipos de tratamentos, o que era visto como caro pelos hospitais. Pensando nisso, a AECL introduziu o Double Pass Linear Accelerator, ou Acelerador Linear de Passagem Dupla, e ele conseguia ser mais ou menos uma máquina dois em um.
A primeira máquina a ter esse conceito de dois em um foi a chamada Therac-20, mas a AECL acreditava que podia melhorar. Foi então que o protótipo da chamada Therac-25 foi criado. Ela funcionaria com esse conceito de passagem dupla.
Ela seria uma máquina dois em um e ela seria totalmente dependente do software. Inclusive as medidas de segurança, que antes eram baseadas em hardware, ou seja, coisas físicas, agora dependiam completamente de software, código. Em resumo, o Therac-25 faria tudo completamente sozinho.
O radiologista precisaria apenas posicionar a pessoa na máquina, informar a prescrição médica e definir o tipo de radiação. Então, seria tudo feito de forma automática e com um mínimo de presença humana. E, em teoria, isso diminuiria a possibilidade de falhas humanas.
Mas o código tem umas coisas curiosas. Ele inteiro foi escrito na linguagem de programação PDP-11 Assembly Language e ele foi escrito por uma pessoa no decorrer de anos. E até hoje a gente não sabe quem foi essa uma pessoa.
A gente não sabe quem era o responsável pelo código e nem quais eram suas experiências e qualificações. E nem mesmo os advogados envolvidos no caso conseguiram identificar a pessoa, mesmo depois de inúmeros processos que a empresa levou. E isso nos leva ao momento em que as coisas começaram a dar errado.
O primeiro caso que levou a um processo aconteceu em junho de 1985. Uma mulher estava fazendo a sua 12ª sessão de radioterapia para tratar um câncer na região da clavícula. E normalmente o processo era completamente indolor quando o paciente recebia 200 rads de radiação a cada vez.
Mas nesse dia ela sentiu uma sensação de queimado e disse para o técnico que ele havia queimado a pele dela. A queimadura continuou a piorar durante as próximas semanas e os técnicos e médicos do centro de tratamento acreditavam que eram sintomas do câncer que estava sendo tratado. No entanto, um médico percebeu que as lesões foram causadas por alta dose de radiação, calculando que a paciente tinha recebido cerca de 15 a 20 mil rads.
Só lembrando que a dose era para ser por volta dos 200 rads. Quando eles informaram a AECL, a empresa retornou dizendo que o médico estava fazendo alegações falsas e que era impossível um erro como esse acontecer. Um pouco mais de um mês depois, em Ontário, no Canadá, algo semelhante aconteceu com outra paciente que também teve sensação de queimaduras.
A estimativa é que ela tenha recebido uma quantidade próxima a 17 mil rads. Para vocês terem noção da quantidade de radiação, ela é maior do que a quantidade absorvida pelos dois físicos que foram vítimas dos acidentes envolvendo o núcleo do demônio. O problema foi informado à empresa, que retornou dizendo que era apenas um problema na mesa giratória.
A empresa adicionou no software uma forma de identificar se a mesa estava ou não na posição ideal. E eles afirmaram que isso aumentaria em 10 mil vezes a segurança da máquina. Mas novamente, ela dependia apenas do software, do código para a segurança.
A Canadian Radiation Protection Bureau pediu que a empresa adicionasse medidas de segurança no hardware da máquina, para que ele funcionasse como uma medida de segurança adicional, mas a empresa nunca respondeu. Outro acidente aconteceu em dezembro daquele mesmo ano, mas novamente a AECL disse que era impossível aquele erro e o software da máquina proibiria uma dose tão alta. E para piorar, só uma das três vítimas de 1985 morreu naquele ano.
E a causa da morte foi, provavelmente, a doença que estava sendo tratada. Os outros dois pacientes tiveram sequelas às lesões, mas essas sequelas não chegaram a ser fatais. Mas o pior ainda estava por vir.
Os técnicos que manuseavam a máquina disseram mais tarde que era comum erros com números aparecerem. E, geralmente, eles diziam 'Malfunction X'. E esse X, na verdade, era só um número, que ia até mais ou menos 64.
Alguns deles até relatavam que os erros apareciam diariamente e sumiam logo depois. E eles davam sempre as mesmas instruções de reparo. Era só desligar a máquina, ligar ela de novo e, puf, pronto.
Ela volta a funcionar. Quanta coisa na vida não é assim, né? E quando eles iam procurar o que os erros significavam no manual, não tinha nada de útil.
E mesmo tentando o contato com a empresa, ela também não respondia. Até que em março de 1986, no Texas, um paciente estava na sua nona sessão de radioterapia. Ele estava tratando um tumor localizado nas costas.
E o hospital já tinha feito mais de 500 sessões usando o Therac-25. E até então, eles não tinham nenhum registro de um problema semelhante àqueles que aconteceram em 1985. Até que uma técnica experiente colocou os dados na máquina e apertou a letra X, de raio-X, ao invés de E, de elétrons.
E antes que ela pudesse apertar, a técnica percebeu o erro e mudou os parâmetros e continuou o tratamento como de costume. Até que um erro 'Malfunction 54' apareceu no monitor e, de acordo com o manual, isso significa que o paciente havia recebido uma dose ou muito baixa ou muito alta de radiação. A técnica percebeu isso.
No monitor da máquina estava escrito que o paciente tinha recebido só 6 unidades de dose ao invés das 202 esperadas. Ou seja, de acordo com o software da máquina, ele tinha recebido dose de menos. E aí a técnica apertou o botão OK novamente para liberar mais.
Dentro da sala onde estava a máquina, o paciente percebeu que tinha alguma coisa errada quando ele sentiu um choque elétrico forte passando pelo seu corpo. Ele tentou avisar a técnica, mas os alto-falantes da sala não estavam funcionando. Ele sentiu outro choque antes de conseguir avisar a técnica, que finalmente interrompeu o procedimento.
E no monitor ainda constava que ele tinha recebido uma dose menor do que a esperada. E os médicos que foram chamados para resolver disseram que provavelmente o que ele sentiu foi um choque comum por causa dos equipamentos eletrônicos. O paciente foi enviado para casa e a máquina voltou a funcionar pelo resto do dia.
Os técnicos da AECL até foram chamados para reproduzir o erro, mas eles não conseguiram. Até que dias depois, esse mesmo paciente retornou com sintomas de overdose por radiação e os médicos calcularam que ele tinha recebido uma dose de radiação maior do que a de alguém que estivesse na usina de Chernobyl quando ela explodiu. O paciente faleceu em agosto daquele ano por complicações associadas a essa alta dose de radiação.
Em abril do mesmo ano, no mesmo hospital, o mesmo erro 54 aconteceu com outro paciente que faleceu em Maina. Quando a empresa foi chamada, eles disseram que não conseguiam reproduzir o erro. E eles assumiram que talvez tinha sido só um choque elétrico por causa de algum curto circuito, mas logo perceberam que esse não era o caso.
Após testes de um médico, a empresa finalmente confirmou que tinha um problema no código e pediu para os usuários não mudarem mais o tipo de radiação de forma rápida. O que acontecia era que, para mudar os tipos de radiação, os imãs levavam 8 segundos para deixar tudo na configuração adequada. Quando os valores eram alterados em menos de 8 segundos, as configurações dos imãs não eram alteradas e a radiação podia chegar aos pacientes de forma fatal.
O próprio código que fazia a máquina funcionar era cego para esse erro. Ele não conseguia analisar se o que estava no monitor era a configuração em que a máquina se encontrava no momento em que os raios eram produzidos. E o erro 54 dizia mais sobre a dose ter sido alta demais ou baixa demais e não sobre a questão de a máquina não estar na configuração adequada.
Inclusive, até o dosímetro da máquina indicava uma dose bem menor do que a usual. E nós não podemos nos esquecer de que a AECL vendia a máquina como se o software detectasse todo e qualquer problema. Então, em teoria, esses problemas deveriam ser identificados pelo código da máquina, mas ele possuía bugs que não eram identificados.
Os modelos anteriores ao Therac-25 possuíam o mesmo erro, mas eles tinham confirmações de segurança através do próprio hardware, mesmo quando o operador cometia erros. Ou seja, se o Therac não estivesse na configuração adequada, a máquina possuía travas de segurança que impediriam o funcionamento e evitava acidentes. E esse foi o grande problema.
A segurança da máquina era 100% dependente do código dela, que em teoria devia detectar tudo isso. A AECL atualizou o software para consertar esse problema, e no fim de 1986 parecia que tudo estava resolvido. Mas como se não bastasse, em janeiro de 1987, outro acidente fatal aconteceu em Washington.
Mais uma vez por outro bug no software. Uma das funções do código era verificar se a posição da máquina estava correta. E para isso ele poderia verificar a posição centenas de vezes antes de liberar a dose de radiação.
Só que se o valor fosse qualquer um diferente de zero, isso significaria um problema na posição, então a dose não poderia ser liberada. Mas a variável que a empresa usou para isso possuía apenas 1 byte, que limita o número de valores possíveis para apenas 256 valores, que vão do zero ao 255. Ou seja, era improvável, mas podia acontecer uma ocasião em que o software tentasse mostrar o valor 256, que é um número diferente de zero, que deveria proibir a liberação de radiação, mas ainda assim o código deria esse número como zero, porque ele está fora do intervalo.
E o improvável aconteceu. O número parou justamente em 256, que foi lido como zero pelo código da máquina e liberou radiação quando a posição ainda não estava correta. E esse foi o terceiro acidente fatal envolvendo a Therac-25.
E como consequência, o FDA passou a investigar mais a fundo a AECL. Eles até tentaram melhorar o código e adicionar travas de segurança no próprio hardware, mas a empresa logo encerrou a sua atuação no desenvolvimento de equipamentos médicos. E pra piorar, na investigação eles descobriram que a empresa nunca havia testado propriamente a máquina antes.
Apesar de eles terem alegado que eles tinham feito mais de 25 mil horas de testes, mais tarde eles descobriram que esse não era o caso. E o que deixa tudo ainda mais bizarro é que o código foi escrito por apenas uma pessoa que até hoje nós não sabemos quem é. E toda a segurança de uma máquina com radiação estava baseada nesse código.
Hoje, o caso do Therac-25 funciona como um caso de estudo de ética nos cursos de ciência da computação e também de como bugs podem ser fatais. Isso é ainda mais grave quando pensamos que hoje nós somos ainda mais dependentes de máquinas em diversas áreas, incluindo medicina. Claro que a maior parte dos erros do nosso dia a dia é do tipo, nossa, meu YouTube tá demorando pra carregar, eu mostro uma mensagem de erro quando eu abro o Ciência Todo Dia.
E esse tipo de erro é muito menos grave do que um Therac-25 da vida. Mas é importante a gente parar pra refletir o quanto a gente confia nas máquinas. E esse tipo de situação tende a ficar ainda maior e mais frequente, com o avanço de IAs em áreas como medicina, aeronáutica e automobilismo.
Sim, humanos estão aptos a falhar até mais do que máquinas. Mas isso não significa que elas são imunes a erros que nós devemos confiar cegamente nelas. Eu acho importante deixar claro que meu objetivo nesse vídeo não é criar caos, já que máquinas podem ter até mais casos de sucesso do que casos de falhas em diferentes áreas.
Mas é importante a reflexão de que existem casos em que nós não devemos confiar cegamente em máquinas e quem sabe o caminho para reduzir o risco seja um trabalho em conjunto entre humanos, hardware e softwares. Isso é algo que devemos ter em mente até mesmo com algo simples como confiar cegamente no que o ChatGPT responde, já que a tendência é a nossa dependência nele aumentar. E se você gosta desse tipo de tema de vídeo, não esquece de se inscrever aqui no canal pra eu fazer mais.
Muito obrigado e até a próxima!
Copyright © 2024. Made with ♥ in London by YTScribe.com