This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Remove lwp -> pid conversion in linux_nat_xfer_partial
On 2017-03-21 21:00, Pedro Alves wrote:
Nope. If you call "exit", then yes. The kernel kills the whole thread
group in response to that system call. If the leader does
pthread_exit, then no, the thread group stays around until all children
exit too. The kernel won't report the main thread's exit status (i.e.,
we can't reap that zombie, and we'd hang if we tried a blocking
waitpid)
until all the children are reaped first. That's why we have
linux-nat.c:check_zombie_leaders (and the equivalent in gdbserver).
Oh ok, in my testing I was just letting main return, but I guess it
reaches a point where the libc calls the exit syscall. When I call
pthread_exit, the process stays alive.
So if possible to switch those spots too, I'd recommend/prefer it.
Ok, I'll just replace ptid_get_pid with get_ptrace_pid* in this patch
Since this is linux-specific code, you should be able to use
ptid_get_lwp directly.
Ok.
and look at using /proc/<pid>/task/<tid> after. When doing the
latter,
do I still have to consider cases where ptid is a
single-process/thread
ptid (lwp == 0)? From my experience, there's always a lwp on Linux,
but
perhaps there are some setups I don't know about with which it can
happen?
Right, on Linux there's always an lwp. Before NPTL, the
/proc/<pid>/task/<tid> path didn't exist at all, but we no longer
support LinuxThreads.
Thanks, I'm sending an updated patch.
Simon