310 likes | 499 Views
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas. Acidentes originados por falhas de software. Therac -25. Ricardo Campos, 18 de Junho de 2004. Universidade da Beira Interior Mestrado em Eng.ª Informática
E N D
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Acidentes originados por falhas de software Therac -25 Ricardo Campos, 18 de Junho de 2004
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Agenda Programação Concorrente Therac-25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Programação Concorrente
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Programação Concorrente O que é um programa concorrente? Um programa sequencial tem uma única thread de controlo Um programa concorrente tem múltiplas threads de controlo que lhe permitem executar várias tarefas em paralelo
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Programação Concorrente O que é uma thread? Um fio de execução. Cada thread tem a sua própria pilha, mas partilha o código e a memória com as restantes threads do mesmo processo Código Memória pilha pilha
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Programação Concorrente Porquê a programação concorrente? • Ganhos de performance • Aumento da rapidez de resposta ao utilizador
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Programação Concorrente Problemas • A concorrência é muito utilizada, mas extremamente propensa a erros • Mars Rover • Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Cronologia • 1970 AECL e uma companhia francesa, desenvolvem o Therac-6 e o Therac-20 • 1983 Anunciado o desenvolvimento do Therac-25 • 1984 Implementado o Therac-25 • 1985 – 1987 Vários pacientes recebem doses excessivas durante o tratamento
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Introdução • Visto até hoje, como o incidente mais trágico relacionado com a morte ou ferimentos em seres humanos, por causa directa de falhas em software • o caso serve para lembrar: no momento em que confiamos a vida e a saúde das pessoas a computadores, a importância da eliminação de bugs é questão de vida ou morte. • Entre Junho de 1985 e Janeiro de 1987, seis pacientes receberam doses exageradas de radiação enquanto recebiam tratamento do acelerador linear médico Therac-25. • 4 dos pacientes morreram
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Conceito • A terapia de radiação é usada para tratar tumores e consiste em destruir o cancro entregando uma dose cuidadosamente calculada de radiação ao tumor, enquanto é minimizada a radiação do tecido circunvizinho • Em tratamentos simples, são aplicados doses na ordem dos 200 rads (dose de radiação absorvida)
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Funcionamento • O Therac-25, antecedido da versão 20, aplicou mais de 20.000 radiações com sucesso em cerca de 500 pacientes • Consistia de uma máquina, instalada numa sala de tratamento e controlada através de software, monitorizado por um operador numa sala contígua
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • Era uma máquina, com funcionamento em ‘modo-dual’, o mesmo acelerador gerava dois tipos diferentes de raios: Raios-x para tumores profundos Raios de electrões para tumores superficiais • Assentava numa plataforma giratória (que rodava para a posição correcta antes do início do tratamento), com 3 posições: modo electrões modo raio-x operação luz de campo
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • O operador sentado numa mesa de controlo (fora da sala de tratamento) confirmava um a um, os parâmetros previamente inseridos na sala de tratamento • Uma vez este processo concluído, o operador digitaria o programa de tratamento previamente prescrito: ´x´ para raios X ´e´ para electrões
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Modo Electrões • A energia do raio era fixada num valor apropriadamente baixo • Um conjunto de ‘scanning magnets’ era usado para espalhar o raio
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • O problema com os raios de electrões, é que difundem rapidamente e não conseguem penetrar mais profundamente para outro tipo de tratamentos que não sejam os superficiais • Para resolver este problema, o Therac-25 funcionava como referido anteriormente em dual- mode no qual os raios-x (fotões) são usados para tratamentos mais exigentes
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Modo Raios-X • Para funcionar em modo de raio-x, um direccionador de tungsténio e um ‘aplanador de raio’ eram movidos para a base do raio de electrões • Debaixo desse feixe de electrões, o aparelho criava os raio-xs • No entanto, a potência destes raios-xproduzidos é muito fraca • Por isso a intensidade dos electrões tinha que ser massivamente incrementada em cerca de 100 vezes mais, do que durante um tratamento de electrões
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Acidente – Causa 1 • O operador digitava a tecla ‘X’ em vez da tecla ‘e’ • Administrava assim uma dose de radiação cerca de 100 vezes superior ao máximo, que o corpo humano podia aguentar naquela zona de acção • Apercebendo-se do facto e para corrigir o problema, o operador, movia o cursor para cima no monitor com a tecla ‘seta para cima’ e em modo de edição corrigia as entradas erradas o campo modo, tecla ‘e’ o campo energia
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • Depois de tudo verificado era dado início ao tratamento • Aparentemente tudo funcionava na perfeição • O erro continuou ignorado
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Acidente – Parte Técnica • Definir na posição correcta as várias partes do scanning magnet levava cerca de 8 segundos • A rotina Ptime era executada tantas vezes quantas as partes do scanning magnet a posicionar • A flag Bending Magnet era iniciada na sub-rotina Magnet e limpa no final da sub-rotina Ptime • Ptime verificava uma variável partilhada que indicava a presença de algum pedido de edição por parte do operador
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • Se houvesse uma alteração do modo de operação de ´x´ para ´e´ o posicionamento dos magnets era interrompido • O problema é que Ptime aquando da sua primeira execução (tantas quantos os magnets a posicionar), limpava a flag e dessa forma, tornava-se impossível entrar no ciclo e verificar alguma alteração • Como o operador corrigia os dados em menos de 8 seg. (o tempo que levava a configurar os scanning magnets), o software não aceitava o valor de energia corrigido e deixava-o em 25MeV
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • A “limpeza” da flag bending magnet deveria pois ser feita no fim do posicionamento de todos os magnets ao invés de ser feito no final de cada ciclio de ptime.
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Acidente – Causa 2 • Havia no software uma parte do programa (tarefa Hkeper) que continuamente verificava o correcto posicionamento da plataforma giratória (turntable/collimator). • Essa verificação era feita com base numa variável partilhada (Class3), incrementada (tarefa Treat) a cada fase da verificação das várias rotinas • Valor zero no contador (variável Class3), indicava ao operador a correcta configuração dos parâmetros
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • Depois de definir a variável Class3, a rotina verifica por alguma “Malfunction” (valor diferente de zero) no sistema usando outra variável partilhada (FSmal) • A questão é que esta verificação só era feita se o valor da variável Class3 não fosse zero
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Acidente – Causa 2 • Como a variável do contador (Classe3) tinha apenas 1 byte, 255 era o valor decimal mais elevado que o contador (incrementado a cada fase da verificação das várias routinas) poderia registar • Se o programa fizesse 256 verificações, o contador automaticamente ficava com o valor zero • A verificação Chkcol não era feita e o software passava a ideia de uma segurança inexistente
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • A plataforma não estaria na posição correcta e o operador se iniciasse o tratamento naquele momento injectaria no paciente uma dose demasiado elevada de electrões
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 Conclusão • O Therac-25 era olhado como uma máquina extremamente fiável, que custava milhões de dólares, ocupava uma sala inteira, e tida como o sonho de qualquer médico. • Gradualmente, os médicos foram tirando impressões entre eles e chegaram à conclusão do mau funcionamento da máquina • Este triste exemplo ilustra bem o perigo de software defeituoso • Em cada um dos diferentes tipos de acidentes, o raio de electrões foi aplicado na máxima força (25 MeV, como seria apropriado para modo de raio-X) directamente ao paciente
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • A aplicação de doses excessivas, apesar de envolver erros por parte do operador ocorriam por causa de erros no software Therac-25 e porque a equipa de desenvolvimento não seguiu as práticas correntes da engenharia de software • O desenho do software do Therac-25, suportava um ambiente multi-tarefa e o software permitia acesso concorrente a variáveis partilhadas • Esta precária implementação, causou a falha da máquina perante determinadas condições • O sistema da máquina tinha erros ocasionados por execuções concorrentes de tarefas.
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Therac - 25 • A programação concorrente é muito utilizada mas extremamente propensa a erros (maioritariamente devido a uma cultura de programação sequencial) • Desde o princípio dos anos 90, particularmente após o despenho do Ariane 5, o interesse em tácticas de desenvolvimento que previnam bugs, renovou-se • Implementaram-se assim: técnicas de programação; metodologias de desenvolvimento e melhorias nas linguagens de programação
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Bibliografia On-line http://infotech.fanshawec.on.ca/gsantor/Computing/FamousBugs.htm http://courses.cs.vt.edu/%7Ecs3604/lib/Therac_25/Therac_1.html http://computingcases.org http://courses.cs.vt.edu/~cs3604/lib/Therac_25/ Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários.