Re: [FUG-BR] chunk already is free()

2007-03-26 Por tôpico Ricardo Nabinger Sanchez
On Mon, 26 Mar 2007 09:42:32 -0300
Rodrigo Salvador <[EMAIL PROTECTED]> wrote:

> Tomei o cuidado de colocar log em todas as linhas para rastrear o ponto 
> da falha, mas não tive resultado.

Outra coisa que pode ajudar: seções 'Tuning' e 'Debugging Malloc Problems'.
Basicamente definir uma variável de ambiente antes de executar o programa ou
incluir uma variável específica no programa para passar parâmetros para o
malloc().

-- 
Ricardo Nabinger Sanchez <[EMAIL PROTECTED],wait4.org}>
Powered by FreeBSD

  "Left to themselves, things tend to go from bad to worse."
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] chunk already is free()

2007-03-26 Por tôpico Ricardo Nabinger Sanchez
On Mon, 26 Mar 2007 09:42:32 -0300
Rodrigo Salvador <[EMAIL PROTECTED]> wrote:

> tenho um programa escrito em c++, que utiliza Threads com a lib 
> ulxmlrpcpp e é executado como WebService em um FreeBSD 6.1. Tenho também 
> inúmeras classes que definem as funções publicadas para o WebService, e 
> essas classes manipulam arquivos e algumas vezes executam um comando no 
> shell (via system()).

Já tentou ligar com a libthr ao invés da libpthread?  O "nome" desse problema
é "corrupted heap", talvez ajude em novas buscas.

-- 
Ricardo Nabinger Sanchez <[EMAIL PROTECTED],wait4.org}>
Powered by FreeBSD

  "Left to themselves, things tend to go from bad to worse."
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] chunk already is free()

2007-03-26 Por tôpico Victor Loureiro Lima
A implementacao do malloc(3) no FreeBSD e' um tanto friendly com o seu
programa, por exemplo, ela avisa que voce tentou liberar uma memoria
que ja' havia sido liberada em ponto no passado. Por tanto, voce
estava com um ponteiro para algo que ja' nao mais referenciava algo
que existia, pois havia sido deletado.

A "man 3 malloc" e' bem especifica sobre o seu uso e comportamento nas secoes:
Debugging malloc problems
Diagnostic Messages

Eu recomendaria uma leitura completa do codigo-fonte procurando por
pontos aonde voce usa malloc/free e verificando se existem condicoes
de corrida ou bugs na maneira como essas chamadas sao feitas.

Me pareceu pela sua mensagem que o seu aplicativo e' threaded?! Seria
possivel que algum thread do seu programa tenha liberado uma memoria
alocada que outro thread estaria tentando usar depois... Esse tipo de
problema em um ambiente multi-threaded e' bem dificil de se
diagnosticar ;/

victor f. loureiro lima

Em 26/03/07, Rodrigo Salvador<[EMAIL PROTECTED]> escreveu:
> Caros,
>
> tenho um programa escrito em c++, que utiliza Threads com a lib
> ulxmlrpcpp e é executado como WebService em um FreeBSD 6.1. Tenho também
> inúmeras classes que definem as funções publicadas para o WebService, e
> essas classes manipulam arquivos e algumas vezes executam um comando no
> shell (via system()).
>
> Entretando algumas vezes o programa quebra com a mensagem "chunk already
> is free()", e não estou conseguindo identificar o ponto onde isso ocorre.
>
> Tomei o cuidado de colocar log em todas as linhas para rastrear o ponto
> da falha, mas não tive resultado.
> A edição de arquivos é feita usando um esquema de lock para concorrência
> de edição de arquivo.
> Aloquei todos os objetos usando "new" e "delete", mas também não resolveu.
>
> Procurei inúmeras vezes no google sobre a origem desta falha, mas ainda
> não achei. Alguém pode me dar uma luz e apontar onde devo olhar ?!
> Segue o conteúdo do core gerado.
>
> gdb /usr/sbin/flydnsd flydnsd.core
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386-marcel-freebsd"...(no debugging symbols
> found)...
> Core was generated by `flydnsd'.
> Program terminated with signal 6, Aborted.
> Reading symbols from /lib/libmd.so.2...(no debugging symbols found)...done.
> Loaded symbols for /lib/libmd.so.2
> Reading symbols from /usr/local/lib/libulxmlrpcpp.so.13...(no debugging
> symbols found)...done.
> Loaded symbols for /usr/local/lib/libulxmlrpcpp.so.13
> Reading symbols from /usr/lib/libstdc++.so.4...(no debugging symbols
> found)...done.
> Loaded symbols for /usr/lib/libstdc++.so.4
> Reading symbols from /lib/libm.so.3...(no debugging symbols found)...done.
> Loaded symbols for /lib/libm.so.3
> Reading symbols from /lib/libc.so.5...(no debugging symbols found)...done.
> Loaded symbols for /lib/libc.so.5
> Reading symbols from /usr/lib/libpthread.so.1...(no debugging symbols
> found)...done.
> Loaded symbols for /usr/lib/libpthread.so.1
> Reading symbols from /usr/local/lib/libexpat.so.6...(no debugging
> symbols found)...done.
> Loaded symbols for /usr/local/lib/libexpat.so.6
> Reading symbols from /lib/libcrypto.so.3...(no debugging symbols
> found)...done.
> Loaded symbols for /lib/libcrypto.so.3
> Reading symbols from /usr/lib/libssl.so.3...(no debugging symbols
> found)...done.
> Loaded symbols for /usr/lib/libssl.so.3
> Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols
> found)...done.
> Loaded symbols for /libexec/ld-elf.so.1
> #0  0x2833f31b in pthread_testcancel () from /usr/lib/libpthread.so.1
> (gdb) where
> #0  0x2833f31b in pthread_testcancel () from /usr/lib/libpthread.so.1
> #1  0x2832e54b in sigaction () from /usr/lib/libpthread.so.1
> #2  0x2832e260 in sigaction () from /usr/lib/libpthread.so.1
> #3  0x28337902 in pthread_mutexattr_init () from /usr/lib/libpthread.so.1
> #4  0x in ?? ()
> (gdb)
>
>
> vlw
>
> Rodrigo
>
> -
> 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


[FUG-BR] chunk already is free()

2007-03-26 Por tôpico Rodrigo Salvador
Caros,

tenho um programa escrito em c++, que utiliza Threads com a lib 
ulxmlrpcpp e é executado como WebService em um FreeBSD 6.1. Tenho também 
inúmeras classes que definem as funções publicadas para o WebService, e 
essas classes manipulam arquivos e algumas vezes executam um comando no 
shell (via system()).

Entretando algumas vezes o programa quebra com a mensagem "chunk already 
is free()", e não estou conseguindo identificar o ponto onde isso ocorre.

Tomei o cuidado de colocar log em todas as linhas para rastrear o ponto 
da falha, mas não tive resultado.
A edição de arquivos é feita usando um esquema de lock para concorrência 
de edição de arquivo.
Aloquei todos os objetos usando "new" e "delete", mas também não resolveu.

Procurei inúmeras vezes no google sobre a origem desta falha, mas ainda 
não achei. Alguém pode me dar uma luz e apontar onde devo olhar ?!
Segue o conteúdo do core gerado.

gdb /usr/sbin/flydnsd flydnsd.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain 
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...(no debugging symbols 
found)...
Core was generated by `flydnsd'.
Program terminated with signal 6, Aborted.
Reading symbols from /lib/libmd.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libmd.so.2
Reading symbols from /usr/local/lib/libulxmlrpcpp.so.13...(no debugging 
symbols found)...done.
Loaded symbols for /usr/local/lib/libulxmlrpcpp.so.13
Reading symbols from /usr/lib/libstdc++.so.4...(no debugging symbols 
found)...done.
Loaded symbols for /usr/lib/libstdc++.so.4
Reading symbols from /lib/libm.so.3...(no debugging symbols found)...done.
Loaded symbols for /lib/libm.so.3
Reading symbols from /lib/libc.so.5...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.5
Reading symbols from /usr/lib/libpthread.so.1...(no debugging symbols 
found)...done.
Loaded symbols for /usr/lib/libpthread.so.1
Reading symbols from /usr/local/lib/libexpat.so.6...(no debugging 
symbols found)...done.
Loaded symbols for /usr/local/lib/libexpat.so.6
Reading symbols from /lib/libcrypto.so.3...(no debugging symbols 
found)...done.
Loaded symbols for /lib/libcrypto.so.3
Reading symbols from /usr/lib/libssl.so.3...(no debugging symbols 
found)...done.
Loaded symbols for /usr/lib/libssl.so.3
Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols 
found)...done.
Loaded symbols for /libexec/ld-elf.so.1
#0  0x2833f31b in pthread_testcancel () from /usr/lib/libpthread.so.1
(gdb) where
#0  0x2833f31b in pthread_testcancel () from /usr/lib/libpthread.so.1
#1  0x2832e54b in sigaction () from /usr/lib/libpthread.so.1
#2  0x2832e260 in sigaction () from /usr/lib/libpthread.so.1
#3  0x28337902 in pthread_mutexattr_init () from /usr/lib/libpthread.so.1
#4  0x in ?? ()
(gdb)


vlw

Rodrigo

-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd