[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: Segmentation fault em strcmp







On Fri, 7 Jun 2002, Yoshiharu Kohayakawa wrote:

> Leonardo Giantini Trabuco wrote (on Friday, 7 Jun 2002, at 14:54:29 -0300):
>  > On Fri, 7 Jun 2002, Yoshiharu Kohayakawa wrote:
>  > 
>  > > Leonardo Giantini Trabuco wrote (on Friday, 7 Jun 2002, at 14:48:10 -0300):
>  > >  > Olá...
>  > >  > 
>  > >  > Pois é, não foi o último e-mail... :-)
>  > >  > 
>  > >  > Consegui algo bem "interessante"... Meu programa chama o strcmp, sendo que
>  > >  > os dois argumentos que são passados para o strcmp são o ponteiro NULL...
>  > >  > 
>  > >  > e ele dá segmentatiom fault dentro do strcmp!
>  > > 
>  > > Sim!  O strcmp supoe que os argumentos sao strings, de forma
>  > > que ele espera pelo menos um caracter cada (a saber, o '\0',
>  > > indicando dois strings vazios).  Y.
>  > 
>  > Mas na página tem um programa (tabela de símbolos com ABBs) que chama o
>  > strcmp com NULLitem como um dos argumentos... mas NULLitem é igual a NULL,
>  > e isso funciona...
> 
> Em mais detalhe, é assim: o NULLitem nao tem chave, de forma que nunca
> fazemos, por exemplo, o teste
> 
>   eq(key(NULLitem), v)
> 
> Fazemos testes do tipo
> 
>  if (STsearch(v) == NULLitem) 
> 
> que nao usa eq().  Assim, aquele codigo da pagina nunca executa 
> 
>  eq(NULL,NULL)
> 
> de forma que nunca vimos (até hoje?) esse erro.  Faz sentido?  Y.

Claro!!! eu substitui o teste por eq()... tudo certo... até e obrigado!

> 
>  > >  > esta é a saída do gdb:
>  > >  > ----------------------------------------------------
>  > >  > Program received signal SIGSEGV, Segmentation fault.
>  > >  > 0x400aab38 in strcmp () from /lib/i686/libc.so.6
>  > >  > ----------------------------------------------------
>  > >  > 
>  > >  > Quanto aos argumentos, tenho certeza que realmente estou passando dois
>  > >  > ponteiros nulos...
>  > >  > 
>  > >  > Alguma idéia?
>  > >  > Leo.
>