Re: Adjusting my debugger to work with NPTL

Daniel Jacobowitz <[email protected]>
Newsgroups gmane.comp.lib.phil
Message-ID <[email protected]>
On Fri, May 02, 2003 at 09:13:39AM -0700, Norman Black wrote:
> Thanks for taking the time to respond to my query.
> 
> > > My specific needs/questions are how to.
> > > 1) stop and continue an individual thread. previously I used SIGSTOP
> and
> > > SIGCONT with kill.
> >
> > SIGSTOP will stop all threads in the task.  SIGCONT will resume all
> threads
> > in the task.  (This is true whether kill or tkill is used.)  You can
> resume
> > individual (traced) threads with PTRACE_CONT.  There isn't a way to
> stop a
> > single thread other than to stop all threads and then PTRACE_CONT a
> subset.
> 
> SIGSTOP and SIGCONT pass to kill I understand in the new signaling
> context.
> How can PTRACE_CONT continue a single thread since ptrace wants a pid
> and all threads now have the same pid.

No, PTRACE_CONT wants what is essentially an LWP ID.  Each thread has its
own and I believe thread_db will tell you what they are.

> What is tkill. Do I need it? I found no tkill API in the header files.
> It appears to only be a system call. No docs.

It is like kill but takes an LWP ID.

> > There isn't a way to stop a
> > single thread other than to stop all threads and then PTRACE_CONT a
> subset.
> 
> This is bogus and a step backwards. Is this a temporary omission?

Roland, can't you just tkill using SIGSTOP?

> > > 2) How are thread debug events received since wait returns "process"
> > > signals. previously waitpid (possibly using __WCLONE) resulting in a
> > > SIGTRAP was the catchall.
> >
> > You PTRACE_ATTACH to each individual thread PID, and then wait reports
> > signal stops for each different thread as it stops.
> 
> thread PID?. I thought all threads had the same pid in NPTL? ptrace
> wants pids and not tids, right?
> 
> How can wait return for a thread since all threads have the same PID?
> Has wait been extended to return TIDs. I have been using waitpid, so do
> I need to switch to using wait.

Wait does not return LWP ids.  It will at some point.  Just need to get
around to changing that and fixing GDB.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.