quinta-feira, 14 de maio de 2015

As falhas numéricas que podem causar desastres

As falhas numéricas que podem causar desastres

Chris Baraniuk
Da BBC Future


4 de junho de 1996 será para sempre lembrado como um dia sombrio para a Agência Espacial Europeia. O primeiro voo não tripulado do foguete Ariane 5, que decolou carregando quatro satélites científicos caríssimos, acabou 39 segundos depois do lançamento, em uma horrível bola de fogo e fumaça. Estima-se que a explosão causou um prejuízo de US$ 370 milhões.
Não foi uma falha mecânica nem um ato de sabotagem. O desastre foi causado por um simples bug em um software, que fez cálculos errados ao se tornar sobrecarregado com números mais longos do que era capaz de suportar.
Erros semelhantes foram também os responsáveis por uma série de incidentes nos últimos anos, fazendo sondas espaciais desaparecerem ou desviando mísseis de seus alvos.
Mas como é possível que computadores fiquem tão embaralhados com números? E o que causa esses bugs?

'Virada' perigosa
Imagine tentar representar um valor de, por exemplo, 105.350 quilômetros em um hodômetro que tem um valor máximo de 99.999. O contador "viraria" para 00.000 e contaria até 5.350, a quantia restante. Foi esse mesmo tipo de imprecisão que condenou o lançamento do Ariane 5.
Tecnicamente, o problema é chamado de "estouro de inteiros", o que significa que os números são muito longos para serem armazenados em um sistema computacional, às vezes provocando seu mau funcionamento.
Uma investigação do incidente com o foguete europeu revelou que um processo deixado pelo software da geração anterior, o Ariane 4, capturou uma inesperada medida de velocidade no novo veículo – muito mais rápido que seu antecessor – e o software do Ariane 5 não conseguiu lidar com esse número tão grande.
Uma sequência de autodestruição foi iniciada e, segundos depois, acontecia a tragédia.
Esse tipo de falha ocorre com uma frequência surpreendente. Acredita-se que um dos motivos pelo qual a Nasa perdeu o contato com a sonda espacial Deep Impact, em 2013, foi o fato de seu software ter alcançado um inteiro.

A ameaça de 2.147.483.647

Especialistas temem bug que poderá causar panes em janeiro de 2038

No início de maio, surgiu a notícia de que um Boeing 787 poderá sofrer um problema semelhante: a unidade de controle que gerencia a distribuição de energia para os motores do avião pode entrar automaticamente em um modo à prova de falhas – desligando as turbinas – se for deixada ligada por mais de 284 dias.
Hipoteticamente, os motores poderiam parar repentinamente em pleno voo.
A diretriz da Administração Federal de Aviação dos Estados Unidos em relação à questão estabelece que um contador no software da unidade de controle "estoure" depois desse período específico de tempo.
Apesar de a FAA e a Boeing terem se recusado a comentar o assunto para esta reportagem, alguns observadores amadores destacaram que, quando contados em centésimos de segundo, 248 dias equivalem ao número 2.147.483.647 – o que é um dado muito importante.
Isso porque 2.147.483.647 é o valor positivo máximo que pode ser armazenado por um registrador de 32 bits, instalado em muitos sistemas computacionais.
No caso do Ariane 5, o software estava usando um espaço de 16 bits, capaz de armazenar o valor máximo de 32.767.

'Economia' de dados
Mas se os números são infinitos, por que usamos espaços de armazenagem tão limitados? Basta lembramos que os computadores tradicionalmente demandam eficiência em todas as frentes.
Quando os primeiros modelos surgiram, o espaço de armazenamento costumava era bem mais caro e o processamento de grandes números era mais lento. Mas, mantendo-se alguns limites, como os contadores, os softwares rodavam com mais facilidade.
Sistemas de foguetes teleguiados processam uma quantidade enorme de números a uma grande velocidade, por isso essa capacidade realmente importa. Mas até o desastre com o Ariane 5, essas limitações não eram vistas como problemáticas.
"Temos que reconhecer que, em termos de software, estamos sempre aproximando a realidade", explica Bill Scherlis, especialista da Universidade Carnegie Mellon, nos Estados Unidos. "A engenharia precisa encontrar um ponto de equilíbrio entre o custo de se ter uma contagem mais precisa e a eficiência com que o programa roda."

Efeitos inusitados

O coreano Psy e a música 'Gangnam Style' 'quebraram' o contador de visitas do YouTube
Mas nem todos os bugs de "estouro" de contadores são tão destrutivos. Alguns podem criar efeitos, no mínimo, inusitados.
No videogame Civilization, por exemplo, um defeito fez o pacífico personagem Gandhi se tornar inusitadamente hostil.
E em dezembro passado, o vídeo mais assistido na história do YouTube – Gangnam Style, do coreano Psy – "quebrou" o contador de visitas do site: aparentemente, o contador teria sido programado para ir, no máximo, até 2.147.483.647.
O YouTube se beneficiou da propaganda grátis gerada pela notícia e atualizou seu contador para suportar mais de 9 quintilhões visitantes.
O caso mais famoso de "estouro" da história foi, provavelmente, o chamado Bug do Milênio, que causou alguma dor de cabeça quando se percebeu que muitos computadores ainda registravam anos por seus dois últimos dígitos.
A maioria dos engenheiros e programadores conseguiu atualizar seus sistemas antes de 1º de janeiro de 2000, mas houve alguns incidentes interessantes: no Estado americano de Delaware, 150 máquinas caça-níqueis pararam de funcionar, o equipamento de detecção de radiação da cidade japonesa de Ishikawa entrou em pane, e vários sites exibiram a data "1º de janeiro de 19100".

O ano 2038
Há cerca de 15 anos, o programador William Porquet teve a ideia de pensar em outro momento que será crucial para o mundo da computação: as 3h14m07s da manhã de terça-feira 19 de janeiro de 2038 (horário de Greenwich).
Será nesse instante que o número de segundos contados desde 1º de janeiro de 1970 vai ultrapassar um dos valores máximos capazes de ser armazenados nos registradores de muitos computadores de hoje. Segundo Porquet, quem não se preparar poderá enfrentar falhas.
Sua maior preocupação é com softwares antigos que há anos não são atualizados, como os que controlam redes de distribuição de serviços, e com equipamentos velhos que ainda estão em uso em áreas remotas do planeta.
Já Markus Kuhn, cientista da computação na Universidade de Cambridge, na Grã-Bretanha, está mais interessado em resolver um problema que poderá acontecer agora em junho, quando será adicionado um segundo ao ano de 2015 para corrigir a discrepância entre a hora astronômica (baseada no tempo de rotação da Terra) e a hora atômica (um método mais preciso de contar a passagem do tempo).
A diferença ocorre porque a rotação terrestre está gradualmente se desacelerando. Eventos geológicos, como um terremoto, podem alterar essa velocidade, o que significa que o acréscimo de segundos a um ano é algo variável.
O último ocorreu em 2012 e deixou muitos computadores em pane.

Fonte: BBC

Nenhum comentário:

Postar um comentário

Todas postagem é previamente analisada antes de ser publicada.