Acabei de corrigir um erro num aplicativo em que ando trabalhando nas horas vagas
que confesso foi erro meu, mas teria encontrado a falha mais rápido se o S.O. ajudasse:
O cenário é basicamente esse:
Linux 2.4.26 (sim eu gosto dessa versão)
O aplicativo precisa ler um arquivo de configuração, esse arquivo é lido e inflado
caso necessário se encontrada alguma marcação de digamos "include". O "gênio" aqui faz
tudo mas no final do processamento do .conf fecha o descritor de arquivo uma vez e depois
outra vez.
O problema do problema:
O S.O. não retorna imediatamente "Segmentation Fault" mas retorna
quando chamo apenas uma vez statvfs(), em face disso substituí a
chamada à statvfs() por statfs() e pasmem: passou tranquilo.
Lembrando se chamasse mais de uma vez statvfs() o erro não se
manifestava.
Mas mesmo passando (com statfs()), retornava a "Segmentation Fault" quando tentava
abrir um novo descritor de arquivo.
Foi penoso entender o erro imaginem isso tudo separado em uma infinidade de módulos,
statvfs() estava lá na conchinchina em relação ao parsing do conf por exemplo...
Minha opinão:
Acho que fclose() deveria causar a falha de segmentação imediatamente
assim seria mais fácil detectar e corrigir um bug no ponto certo, fico
imaginando quantos bugs em aplicativos maiores são corrigidos nos
pontos errados devido essas coisas que o S.O deixa passar...
Fora que abre margem para inserção de novos bugs, porque no intuito de
tentar resolver um erro exotérico desses o desenvolvedor pode acabar
refazendo muitas partes do aplicativo à toa.
Daí talvez se explique a infinidade de Patches que não corrigem nada e só
pioram a situação.
Última edição por void_brain_void : 10/11/2009 às 10:39 Motivo: "herros de portugueis"
There are currently 1 users browsing this thread. (0 members and 1 guests)