|
From: Zhiyao T. <mc...@gm...> - 2006-10-16 06:54:39
|
Hi, I tried to use memcheck tool to check whether there're memory leaks in my program. In the initialization part of my program, I created 2 threads through ACE's wrappers class ACE_Task (my program is based on ACE library). These two threads are almost same. But the memcheck tool reports that one of them definitely has memory leak while another possibly has memory leak (when creating): ==22571== 144 bytes in 1 blocks are possibly lost in loss record 97 of 133 ==22571== at 0x4A1AB36: calloc (vg_replace_malloc.c:279) ==22571== by 0x400EA4D: _dl_allocate_tls (in /lib/ld-2.3.6.so) ==22571== by 0x6447500: pthread_create@@GLIBC_2.2.5 (in /lib/libpthread-2.3.6.so) ==22571== by 0x577E23C: ACE_OS::thr_create(void* (*)(void*), void*, long, unsigned long*, unsigned long*, long, void*, unsigned long, ACE_Base_Thread_Adapter*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x57B185E: ACE_Thread_Manager::spawn_i(void* (*)(void*), void*, long, unsigned long*, unsigned long*, long, int, void*, unsigned long, ACE_Task_Base*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x57B4F30: ACE_Thread_Manager::spawn_n(unsigned long, void* (*)(void*), void*, long, long, int, ACE_Task_Base*, unsigned long*, void**, unsigned long*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x57AF3F4: ACE_Task_Base::activate(long, int, int, long, int, ACE_Task_Base*, unsigned long*, void**, unsigned long*, unsigned long*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x40E162: MyProgram::init(ACE_Reactor*) (aaa.cpp:198) ==22571== ==22571== ==22571== 144 bytes in 1 blocks are definitely lost in loss record 98 of 133 ==22571== at 0x4A1AB36: calloc (vg_replace_malloc.c:279) ==22571== by 0x400EA4D: _dl_allocate_tls (in /lib/ld-2.3.6.so) ==22571== by 0x6447500: pthread_create@@GLIBC_2.2.5 (in /lib/libpthread-2.3.6.so) ==22571== by 0x577E23C: ACE_OS::thr_create(void* (*)(void*), void*, long, unsigned long*, unsigned long*, long, void*, unsigned long, ACE_Base_Thread_Adapter*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x57B185E: ACE_Thread_Manager::spawn_i(void* (*)(void*), void*, long, unsigned long*, unsigned long*, long, int, void*, unsigned long, ACE_Task_Base*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x57B4F30: ACE_Thread_Manager::spawn_n(unsigned long, void* (*)(void*), void*, long, long, int, ACE_Task_Base*, unsigned long*, void**, unsigned long*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x57AF3F4: ACE_Task_Base::activate(long, int, int, long, int, ACE_Task_Base*, unsigned long*, void**, unsigned long*, unsigned long*) (in /usr/lib/libACE.so.5.5.2) ==22571== by 0x40E028: MyProgram::init(ACE_Reactor*) (aaa.cpp:191) Definitely I clean both of them after my program finished. So what's the possible reason of the inconsistency? Can someone give me some ideas? The valgrind I used is valgrind-3.2.0-Debian and the platform/OS are x86_64, Debian-Linux 2.6.16-2-em64t-p4-smp. Thanks a lot! |
|
From: Eider O. <eid...@gm...> - 2007-02-01 15:20:21
|
Zhiyao Tu <mcease <at> gmail.com> writes: > ==22571== 144 bytes in 1 blocks are possibly lost in loss record 97 of 133 > ==22571== at 0x4A1AB36: calloc (vg_replace_malloc.c:279) > ==22571== by 0x400EA4D: _dl_allocate_tls (in /lib/ld-2.3.6.so) > ==22571== by 0x6447500: pthread_create <at> <at> GLIBC_2.2.5 (in > /lib/libpthread-2.3.6.so) > ==22571== by 0x577E23C: ACE_OS::thr_create(void* (*)(void*), void*, > long, unsigned long*, unsigned long*, long, void*, unsigned long, > ACE_Base_Thread_Adapter*) (in /usr/lib/libACE.so.5.5.2) Did you get a solution for this issue? I'm running in the same memory leak, and I'm wondering how to fix it! Bye Eider |