This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Re: [RFHelp] Linux, threads, and regsets in thread_db


On Thu, Nov 15, 2001 at 08:55:08AM -0800, H . J . Lu wrote:
> In my case, gdb in thread mode will cal "fetch_register" in infptrace.c.
> Since nothing is running, I got
> 
> reading register sp (#29): No such process.
> 
> I don't know why it works for you.

OK, I misunderstood what you meant by "after the process has run".  I
see the problem.  I'll send another patch that I think is more accurate
later today, once I test it a bit.

> > > Another problem is when I set a break point in a thread function, only
> > > the first thread stops. I got
> > > 
> > > (gdb) b process
> > > Breakpoint 1 at 0x400a38: file Examples/ex1.c, line 14.
> > > (gdb) r
> > > Starting program: /export/build/gnu/glibc/build-mipsel-linux/linuxthreads/ex1 
> > > [New Thread 1024 (LWP 26552)]
> > > [New Thread 2049 (LWP 26569)]
> > > [New Thread 1026 (LWP 26570)]
> > > [Switching to Thread 1026 (LWP 26570)]
> > > 
> > > Breakpoint 1, process (arg=0x1000) at Examples/ex1.c:14
> > > 14        fprintf (stderr, "Starting process %s\n", (char *) arg);
> > > ...
> > > Program received signal SIGTRAP, Trace/breakpoint trap.
> > > [Switching to Thread 1024 (LWP 26552)]
> > > 0x2ab8de24 in __syscall_rt_sigsuspend () at soinit.c:56
> > > 56      soinit.c: No such file or directory.
> > > 
> > > But it may be a kernel bug.
> > 
> > Something is suspicious here.  The process in sigsuspend should have
> > been stopped with SIGSTOP, not SIGTRAP...  is this an example program
> > from glibc?
> 
> Yes, linuxthreads/ex1 from glibc.

OK, I can reproduce this too.  This has something to do with
mishandling thread exit.

> > > 2001-11-14  H.J. Lu  (hjl@gnu.org)
> > > 
> > > 	* mips-tdep.c (heuristic_proc_desc): Read register only when
> > > 	target is running.
> > 
> > I can't see why this changes behavior in the way you're seeing.  I'm
> 
> Why do you think that? Why does anyone want to read a register when
> nothing is running?

We never want to read that register from after_prologue;  the current
stack pointer is not relevant.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]