From: Andy H. <And...@au...> - 2009-05-15 07:33:36
|
Hello, I'm seeing this with 3.4.1 compiled on fedora 9. Just before that I see: ==14457== Mutex reinitialization: mutex 0x4c621a8, recursion count 0, owner 0. ==14457== at 0x4A0B4A4: pthread_mutex_init (in /usr/lib64/valgrind/amd64-linux/vgpreload_drd.so) ==14457== by 0x546DCE: Mutex::create(Mutex::MutexType) (thread.cpp:1023) ==14457== by 0x4DDA85: AsyncDNSImpl::init(Select*, ThreadAccess, unsigned int) (async_dns.cpp:1518) ==14457== by 0x4DE47E: AsyncDNSImpl::create(Select*, EventManager*, ThreadAccess, unsigned int) (async_dns.cpp:87) ==14457== by 0x4E2FAF: AsyncDNS::create(Select*, EventManager*, ThreadAccess, unsigned int) (async_dns.cpp:64) ==14457== by 0x412809: Agent::init(int, char**) (agent.cpp:1838) ==14457== by 0x414C77: main (agent.cpp:2559) ==14457== mutex 0x4c621a8 was first observed at: ==14457== at 0x4A0B4A4: pthread_mutex_init (in /usr/lib64/valgrind/amd64-linux/vgpreload_drd.so) ==14457== by 0x546D9E: Mutex::create(Mutex::MutexType) (thread.cpp:1002) ==14457== by 0x4DDA85: AsyncDNSImpl::init(Select*, ThreadAccess, unsigned int) (async_dns.cpp:1518) ==14457== by 0x4DE47E: AsyncDNSImpl::create(Select*, EventManager*, ThreadAccess, unsigned int) (async_dns.cpp:87) ==14457== by 0x4E2FAF: AsyncDNS::create(Select*, EventManager*, ThreadAccess, unsigned int) (async_dns.cpp:64) ==14457== by 0x412809: Agent::init(int, char**) (agent.cpp:1838) ==14457== by 0x414C77: main (agent.cpp:2559) ==14457== ??? mutex 0x4c621a8: type changed from 3 into 1 Looks like drd thinks the mutex type is changing from a default type to a recursive type mutex. I don't understand why it thinks the mutex is being re-initialized. Both call stacks contain the same functions and line numbers. In my code, this initialization is only done once. Any ideas? Thanks, Andy |