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 0x00000000 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