|
From: Josef W. <Jos...@gm...> - 2003-07-24 07:54:44
|
On Thursday 24 July 2003 07:05, Denis Perchine wrote: > Hello, > > > > I have strange errors in backtrace family functions. > > > The trace attached is with backtrace.c and backtracesyms.c from > > > glibc-2.3.2 compiled with debug and directly linked to see line number. > > > > > > Interesting thing is that I can not reproduce this on the test case. It > > > happens only in big program. Any ideas why this could happend? > > > > I don't know about this implementation of backtrace(), but such > > functions often rummage around in places a portable correct program > > never would. That doesn't mean there's necessarily a problem in this > > code, but it's worth inspecting (and adding Valgrind macros to clarify > > anything correct-but-odd to V itself). > > > > I'm guessing here, but it may only show up on large code because of the > > depth of its stack use. > > It looks like this. Here it is debug output. It walks the stack until it is > in [esp;__libc_stack_end] boundaries. And here is the strange part. > 1. Addresses in backtrace different by one with valgrind trace. > 2. valgrind starts to issue errors just after backtrace walked over > the stack shown by valgrind. Might be this could be fixed by fixing a value > of __libc_stack_end by valgrind? Hi, I don't know about the rest, but a stack-trace going deeper than the stack shown by valgrind simply means memory access to addresses V can't check because it memory was written to before V switched to its simulated CPU. Josef |