Universidade da Beira Interior Mestrado em Eng.ª Informática

30
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas Acidentes originados por falhas de software Ricardo Campos, 18 de Junho de 2004 Therac -25

description

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 - PowerPoint PPT Presentation

Transcript of Universidade da Beira Interior Mestrado em Eng.ª Informática

Page 1: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Acidentes originadospor falhas de software

Ricardo Campos, 18 de Junho de 2004

Therac -25

Page 2: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Agenda

Programação Concorrente

Therac-25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Page 3: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Programação Concorrente

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Page 4: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Programação Concorrente

Um programa sequencial tem uma única thread de controlo

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Um programa concorrente tem múltiplas threads de controlo que lhe permitem executar várias tarefas em paralelo

O que é um programa concorrente?

Page 5: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Programação Concorrente

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

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

O que é uma thread?

pilha pilha

Código

Memória

Page 6: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Programação Concorrente

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Porquê a programação concorrente?

Ganhos de performance

Aumento da rapidez de resposta ao utilizador

Page 7: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Programação Concorrente

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Problemas

A concorrência é muito utilizada, mas extremamente propensa a erros

Mars Rover

Therac - 25

Page 8: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Page 9: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 10: Universidade da Beira Interior  Mestrado em Eng.ª Informática

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

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 11: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Conceito

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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)

Page 12: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 13: Universidade da Beira Interior  Mestrado em Eng.ª Informática

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

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 14: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 15: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Modo Electrões

A energia do raio era fixada num valor apropriadamente baixo

Um conjunto de ‘scanning magnets’ era usado para espalhar o raio

Page 16: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 17: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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-x produzidos é 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

Page 18: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 19: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Depois de tudo verificado era dado início ao tratamento

Aparentemente tudo funcionava na perfeição

O erro continuou ignorado

Page 20: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Acidente – Parte Técnica

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 21: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Se houvesse uma alteração do modo de operação de ´x´ para ´e´ o posicionamento dos magnets era interrompido

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 22: Universidade da Beira Interior  Mestrado em Eng.ª Informática

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.

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Page 23: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 24: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 25: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Acidente – Causa 2

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 26: Universidade da Beira Interior  Mestrado em Eng.ª Informática

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

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

Page 27: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 28: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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.

Page 29: Universidade da Beira Interior  Mestrado em Eng.ª Informática

Therac - 25

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas

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

Page 30: Universidade da Beira Interior  Mestrado em Eng.ª Informática

On-line

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 .

http://infotech.fanshawec.on.ca/gsantor/Computing/FamousBugs.htmhttp://courses.cs.vt.edu/%7Ecs3604/lib/Therac_25/Therac_1.htmlhttp://computingcases.orghttp://courses.cs.vt.edu/~cs3604/lib/Therac_25/

Bibliografia

Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas