|
From: Tom H. <to...@co...> - 2005-05-15 08:33:32
|
In message <200...@we...>
Beorn Johnson <beo...@ya...> wrote:
> The application depends on shared libraries, which in turn load more
> shared objects via dlopen( ). All of the shared objects explicitly
> loaded with dlopen( ) (and seemingly only these) fail to have their
> addresses translated. The program also uses pthreads, mmap/munmap,
> and shared memory (shmget( ), etc). I can look at /proc/$$/maps,
> and the addresses map to the expected shared objects in all cases I
> have checked. The run does not fork( ). It does catch lots
> of signals.
You are presumably dlclosing those same files, which causes valgrind
to discard the name to address mapping so it can't then translate
stack traces involving those addresses.
The mappings are discarded because another library might later be
loaded at the same address and valgrind wouldn't know which set of
mappings to use.
The usual workaround is to prevent things being dlclosed when
running under valgrind.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|