This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: gdb-6.5 produces infinite backtrace on ARM
- From: Daniel Jacobowitz <drow at false dot org>
- To: "Zarges, Olav" <Olav dot Zarges at imc-berlin dot de>, "gdb at sourceware dot org" <gdb at sourceware dot org>
- Date: Sat, 19 Aug 2006 01:24:34 -0400
- Subject: Re: gdb-6.5 produces infinite backtrace on ARM
- References: <44E181DE.7040905@imc-berlin.de> <20060815124053.GA18496@nevyn.them.org>
On Tue, Aug 15, 2006 at 08:40:54AM -0400, Daniel Jacobowitz wrote:
> Normally you should get an ugly end of the backtrace, not an infinite
> one. If you'd like, I can take a look at what's gone wrong. I would
> need enough to reproduce the problem - which probably means a tarball
> including the source, compiled executable, and shared libraries which
> it uses, since this may be specific to something about your build
> environment. If you want to do that, let me know; it's too big to post
> to the list.
Thanks a lot for the test case. The underlying cause was that
pthread_start_thread is marked noreturn; GCC seems to have omitted
the LR register save in this case. I thought it wouldn't do that,
but in any case, we should cope.
I know have a fairly general patch set for this problem, which
produces:
(gdb) bt
...
#4 0xxxxxxxx in pthread_start_thread () from /lib/libpthread.so.0
Backtrace stopped: frame did not save the PC
(gdb)
This isn't ideal - we could detect the pthread_start_thread function
name and stop automatically, which might be a wise addition - but it's
better than going off into the woods.
There's about 250 lines of changes involved, to one of the more
complicated parts of GDB, so I will need to go over the patches again
and post them separately. But I'll try to make sure this is fixed
soon.
--
Daniel Jacobowitz
CodeSourcery