segunda-feira, outubro 15, 2007

Excel 2007: Explicação para o bug

Embora a Microsoft não pretenda dar mais detalhes sobre o bug, uma explicação extremamente detalhada pode ser encontrada em

http://www.lomont.org/Math/Papers/2007/Excel2007/Excel2007Bug.pdf

Chris Lomont se deu ao trabalho de debugar o Excel, achar a rotina com problema, comparar com a mesma rotina nas versões anteriores e explicar o que aconteceu.

De forma resumida, por motivos de desempenho o Excel possui uma rotina de conversão de ponto flutuante para texto escrita em Assembler. Esta rotina estava escrita no velho assembler de 16 bits e no Excel 2007 foi convertida para usar as instruções e registradores de 32 bits. Neste ponto foram introduzidos dois erros. No caso do cálculo 850 * 77,1 em um determinado momento a rotina anterior possuiu o valor 0xFFFF no registrador AX, o incrementava, resultando em zero, o que causava um desvio. Nos 32 bits, o valor 0x0000FFFF em EAX vira 0x00010000 que não é zero e portanto a execução segue pelo caminho errado. O outro erro é algo parecido mas em outro trecho do código.

Esta análise parece vir de encontro com o que eu tinha chutado no meu post original (será um exemplo de psychic debugging?) : um ponto onde o algorítimo precisa selecionar entre dois caminhos E ocorre um overflow (no meu post eu coloquei ou...). Portanto meu veredito é que ocorreu falha no teste unitário da rotina, que não exercitou corretamente este ponto de decisão.

Um comentário:

Gregori Pavan disse...

Daniel, com relaçao ao comentario deixado no meu blog, o que eu poderia dizer é que eu concordo com o projeto de lei acho que devem ser respeitadas algumas regras.

Outro ponto que voce tocou que eu achei interessante foi a aferição, que se eu nao me enganho nao é feita assim tãooo periodicamente, e a balança no caixa é usada pra tudo se voce observar, porta sacola, porta dinheiro, porta produto que o cliente nao quer mais levar na hora... e isso faz sim com que a balança saia da regulagem correta muito mais facil e mais rapido.

E pelo menos os supermercados que eu vou, as informaçoes NÃO aparecem na tela. E nao acho que tende a aumentar os custos ja que isso acontecia anteriormente e em alguns estabelecimentos acontecem.

E tambem acho importante nao ter esse pacotes ja prontos, o cliente tem o direito de escolher e levar na quantidade que ele quer.

Gregori Pavan
http://gregoripavan.blogspot.com