Erros que alegram o dia…
Esse post era pra ter saído na sexta-feira passada, mas não tive tempo no dia, então vai hoje mesmo. Estava eu no final do expediente – o que pode significar num bom dia um horário entre 18h e 20h 🙂 – escrevendo um código de complexidade razoável, quando me deparei com o seguinte erro:
O erro estourou no seguinte trecho:
using (GZipStream file = new GZipStream(fileStream, CompressionMode.Decompress, false))
A mensagem apesar de não dizer muita coisa (diretamente) me fez notar que o erro estava no modo de compressão, o certo era CompressionMode.Compress. Após alterar o código tudo funcionou corretamente.
Havia mostrado o erro a um amigo e notei o espanto dele ao ler uma mensagem de erro tão pitoresca, afinal tratava de um “número mágico incorreto”. O fato é que, infelizmente, na máquina estava instalado o pacote de idiomas do framework 3.5 para o português, o que não ajudou em nada.
No contexto de arquivos, Magic Numbers são os primeiros bytes que identificam um tipo de arquivo unicamente, por exemplo, um PDF ou um arquivo ZIP. Alguns números mágicos ficaram famosos pela peculiaridade das palavras que eram criadas no formato hexadecimal, seguem alguns exemplos:
Magic Number | Description |
---|---|
DEADDEAD |
A Microsoft Windows STOP Error code used when the user manually initiates the crash. |
DEADBEEF |
Famously used on IBM systems such as the RS/6000, also used in the original Mac OS operating systems, OPENSTEP Enterprise, and the Commodore Amiga. On Sun Microsystems’ Solaris, marks freed kernel memory (KMEM_FREE_PATTERN) |
CAFEFEED |
Used by Sun Microsystems’ Solaris debugging kernel to mark kmemfree() memory |
C0DEDBAD |
A memory leak tracking tool which it will change the MMU tables so that all references to address zero |
Fala a verdade, pegar um erro desses alegra ou não o dia? É… não alegra, eu sei.