[5/7] procfs (solaris, iris, osf, unixware, aix5)
Pedro Alves
pedro@codesourcery.com
Fri Aug 15 19:19:00 GMT 2008
On Friday 15 August 2008 18:37:31, Daniel Jacobowitz wrote:
> On Fri, Aug 08, 2008 at 02:37:57AM +0100, Pedro Alves wrote:
> > This patch adjusts the procfs target, so that it registers the main
> > thread in GDB's thread table.
>
> This looks OK to me (took me a couple of tries to convince myself it
> was right, but I'm convinced now).
I'm sorry to had convinced you wrong. :-(
I noticed that before, when we went multi-threaded, we would keep
the main process listed with proc->tid == 0, and we would just
create a new procinfo for the main lwp, which is a little
redundant, but indeed simplifies things.
procfs_wait:
/* In addition, it's possible that this is the first
* new thread we've seen, in which case we may not
* have created entries for inferior_ptid yet.
*/
if (TIDGET (inferior_ptid) != 0)
{
if (!in_thread_list (inferior_ptid))
add_thread (inferior_ptid);
if (find_procinfo (PIDGET (inferior_ptid),
TIDGET (inferior_ptid)) == NULL)
create_procinfo (PIDGET (inferior_ptid),
TIDGET (inferior_ptid));
}
If I instead do that right on target_create_inferior and target_attach,
we're done -- there's always a thread, and there's always a procinfo for
it too.
You asked me on IRC if the main lwp is also available in
the /proc tree, and although I somehow missed it, indeed it is there.
Here, 5642 is a single-threaded app:
pedro@opensolaris:~/orlando/gdb/baseline/build-solaris/gdb$ ls /proc/5642/lwp/
1
Here, 5613 is a multi-threaded app:
pedro@opensolaris:~/orlando/gdb/baseline/build-solaris/gdb$ ls /proc/5613/lwp/
1 2 3
We still have to use the main process procinfo entry, to get at
/proc/<pid>/map /proc/<pid>/as, because as expected, those are
not found under the lwp/1 directory:
pedro@opensolaris:~/orlando/gdb/baseline/build-solaris/gdb$ ls /proc/5613/lwp/1/
lwpctl lwpsinfo lwpstatus lwpusage templates xregs
My previous path had broken creating core dumps in multi-threaded apps,
as iterating over thread procinfo's would miss the main process.
Please find attached a new patch. This one's much simpler.
Only procfs.c changed.
--
Pedro Alves
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 005-procfs_always_a_thread.diff
Type: text/x-diff
Size: 10159 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20080815/08b6703e/attachment.bin>
More information about the Gdb-patches
mailing list