[FUG-BR] gcc gerando código errado

Eduardo Antonio Bortolini ebortolini em gmail.com
Domingo Abril 29 20:26:40 BRT 2012


Talvez, o valgrind possa te ajudar mais que o GDB, ou não..., mas vale
tentar ( http://valgrind.org/ ) . Você comentou que a linha de compilação é
bem grande, talvez tenha alguma dependência que não está sendo compilada no
momento certo ou está desatualizada.... e podem ocorrer comportamentos
muito estranhos como esses ... Talvez fosse interessante você organizar
isso em uma makefile.... Ou pelo menos teer certeza que quando você está
compilando não tenha nenhum .o antigo ou coisa assim ....
Mas vale o teste com o valgrind

Em 29 de abril de 2012 16:52, Alan Silva <alansilva em acm.org> escreveu:

> Testa com o clang, o resultado normalmente acaba sendo mais fácil de ser
> interpretado... :)
>
>
> 2012/4/29 Otacílio <otacilio.neto em bsd.com.br>
>
> > On 29/04/2012 03:03, Paulo Pires wrote:
> > > Já tentou rodar o programa com ktrace/truss/strace?
> > >
> > > 2012/4/28 Otacílio<otacilio.neto em bsd.com.br>
> > >
> > >> On 28/04/2012 23:44, Eduardo Antonio Bortolini wrote:
> > >>> Qual é a linha de comando que você estaria usando para compilar? Não
> > sei
> > >> se
> > >>> já não está fazendo, mas se não estiver tente colocar algumas flags
> de
> > >>> debug na compilação, por exemplo -g, -W
> > >>>
> > >>> Em 28 de abril de 2012 22:37, Otacílio<otacilio.neto em bsd.com.br>
> > >>   escreveu:
> > >>>
> > >>>> Caros
> > >>>>
> > >>>> Estou com um problema aqui simplesmente fora de série!
> > >>>>
> > >>>> Estou compilando um programa que não está no ports, o nome dele é
> > >>>> covered. O programa compila depois de eu usar
> > >>>>
> > >>>> export LIBS=-lpthread
> > >>>>
> > >>>> no prompt. Só que quando ele roda ele dá core dump. Eu fui debugar o
> > >>>> programa e vi que ele estava gerando o coredump quando dava um
> > >>>> fflush(stderr). Até onde sei todo programa abre essa stream. O mesmo
> > >>>> programa no ubuntu funciona direito, sem problemas. Rodei um
> > >>>>
> > >>>> [ota em squitch covered-0.7.10]$ gcc -v
> > >>>> Using built-in specs.
> > >>>> Target: i386-undermydesk-freebsd
> > >>>> Configured with: FreeBSD/i386 system compiler
> > >>>> Thread model: posix
> > >>>> gcc version 4.2.1 20070719  [FreeBSD]
> > >>>>
> > >>>>
> > >>>> Vi também que estão instalados os compiladores
> > >>>>
> > >>>>
> > >>>> [ota em squitch covered-0.7.10]$ pkg_info | grep gcc
> > >>>> avr-gcc-4.5.1_1     FSF GCC 4.x for Atmel AVR 8-bit RISC
> > >> cross-development
> > >>>> gcc-4.4.7,1         GNU Compiler Collection 4.4
> > >>>> gcc-4.6.4.20120406  GNU Compiler Collection 4.6
> > >>>> gccmakedep-1.0.2    Create dependencies in makefiles using 'gcc -M'
> > >>>> mips-rtems-gcc-4.4.2_2 GNU gcc for cross-target development
> > >>>>
> > >>>>
> > >>>> Tentei compilar com o gcc44 e o gcc46 e recebi os mesmos erros.
> Alguém
> > >>>> tem alguma dica do que pode ser?
> > >>>>
> > >>>> []'s
> > >>>> -Otacílio
> > >>>> -------------------------
> > >>
> > >>
> > >>
> > >> Eh bem grande, mas esta compilando com -g já. foi assim que encontrei
> o
> > >> problema analizando o core-dump
> > >> -------------------------
> > >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> > >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> > >>
> > >
> > >
> > >
> >
> >
> > Já rodei com gdb e descobri o seguinte.
> >
> > A versão que funcionou no Ubuntu era porque não compilou com suporte a
> > tcl/tk, Se compilar com suporte a tcl/tk o problema aparece. Agora o
> > mais escroto é que não é um problema no código do tcl/tk, apenas em
> > linkar com o tcl/tk o negócio acontece. O problema tem se manifestado
> > assim:
> >
> > Qualquer chamada a uma rotina que utilize stdout ou stderr dentro de uma
> > rotina que não seja main() dispara o segmentation fault. Agora se eu
> > chamar printf e tal dentro de main não dispara. É como se a pilha
> > tivesse ficado corrompida quando a linkagem com o tcl/tk é feita.
> > Acontece com o compilador gcc 4.2 4.4 e 4.6 tanto no freebsd como no
> > ubuntu.
> > -------------------------
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


Mais detalhes sobre a lista de discussão freebsd