Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <kettenis@gnu.org>
To: drow@false.org
Cc: cagney@gnu.org, gdb-patches@sources.redhat.com, msnyder@redhat.com
Subject: Re: [rfa] Include the LWP in thread-db's PTIDs
Date: Wed, 13 Oct 2004 21:16:00 -0000	[thread overview]
Message-ID: <200410132116.i9DLG50x001428@elgar.sibelius.xs4all.nl> (raw)
In-Reply-To: <20041012133140.GB32588@nevyn.them.org> (message from Daniel Jacobowitz on Tue, 12 Oct 2004 09:31:40 -0400)

   Date: Tue, 12 Oct 2004 09:31:40 -0400
   From: Daniel Jacobowitz <drow@false.org>

   On Mon, Oct 11, 2004 at 09:40:26PM +0200, Mark Kettenis wrote:
   > 
   > I think assuming 1:1 threads is fair enough.  But Daniel, if you're
   > going to do that, I'd like to ask you to rename thread-db.c into
   > linux-thread.c or something like that.

   How about glibc-thread-db.c?

I'm not sure whether that's appropriate.  NPTL is defenitely
Linux-specific.  The Hurd doesn't have a thread_db yet.  I suppose
that if you're going to make some Linux-specific assumptions
glibc-thread-db.c isn't right.

   > Anyway, in that case I think linux-thread.c should be a fairly
   > lightweight layer around the normal Linux LWP-aware
   > inf-ptrace.c-derived target vector.  Only use it to provide an LWP <->
   > TID mapping, and perhaps an initial list of LWPs to attach, but
   > nothing else.  The normal Linux target vector should in no way be
   > dependent on it, such that it allows alternative threads strata on top
   > of it.  Something else just would be a bad design.

   What I'm wondering is how to handle new threads.  There are two
   options: have the kernel report them and lin-lwp report them to
   thread-db, and have thread-db discover them and tell lin-lwp to attach
   to them.  The former is much nicer but see below...

Agreed.  If the LWP-layer could discover new LWP's without the help of
a threads-layer, all possible threads layers would benefit.

   Anyway, I'm wondering if there should be some other method of
   communication between the native and thread strata (as opposed to
   between lin-lwp and thread_db!).  I don't much want to use to_wait for
   this, because the assumption in the rest of GDB is that to_wait returns
   when all threads are stopped and I don't want to gratuitously stop all
   threads when we receive a creation event.

But you don't have to return from to_wait upon a creation event.  But
we probably should if the user asks us to report new threads.  The
current way of printing [new thread] messages is a bit broken, since
GDB doesn't always have control over the terminal.

   > That's because we try to support every combination of a broken glibc
   > and a broken kernel that we can find out there.  Well, perhaps not
   > every possible combination, but certainly some broken combinations.
   > Reliable threads-debugging requires reliable reporting of thread/LWP
   > exits.  Otherwise we keep having problems with threads disappearing
   > from beneath us, leaving us poking at nonexistent memory and
   > registers.
   > 
   > I think we should ditch most of the buggy combinations and state that
   > Linux threads debugging will only work reliably on Linux x.y.z or
   > later with glibc a.b.c or later.

   Unfortunately, thread creation events only work reliably in 2.6.x
   kernels.  2.4.x is still in wide enough use that I think there's value
   in holding on to it.  Thread exit, on the other hand, works pretty
   reliably - there were a series of RH NPTL kernels which couldn't report
   it properly, but it worked fine for LinuxThreads and now it works fine
   for NPTL too.

Thread creation is less critical than thread exit.  It doesn't matter
if you don't access something that's already there. It does matter if
you try to access something that's no longer there.  Akthough hitting
a breakpoint in a thread that we don't know about yet can be a little
tricky.

It might be a good idea though to clearly distinguish between kernels
where thread creation is reported correctly and kernels where it
isn't.

Mark


  reply	other threads:[~2004-10-13 21:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-10 21:36 Daniel Jacobowitz
2004-10-11 15:29 ` Andrew Cagney
2004-10-11 15:38   ` Daniel Jacobowitz
2004-10-11 15:55     ` Joel Brobecker
2004-10-11 16:17     ` Andrew Cagney
2004-10-11 17:12       ` Daniel Jacobowitz
2004-10-11 18:29         ` Andrew Cagney
2004-10-12 13:26           ` Daniel Jacobowitz
2004-10-11 19:40   ` Mark Kettenis
2004-10-12 13:31     ` Daniel Jacobowitz
2004-10-13 21:16       ` Mark Kettenis [this message]
2004-10-13 21:27         ` Daniel Jacobowitz
2004-10-17 19:19           ` Daniel Jacobowitz
2004-10-13 21:37     ` Paul Gilliam
2004-11-14 19:17 ` Daniel Jacobowitz
2004-12-02 21:16   ` Michael Snyder
2004-12-08 16:14     ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200410132116.i9DLG50x001428@elgar.sibelius.xs4all.nl \
    --to=kettenis@gnu.org \
    --cc=cagney@gnu.org \
    --cc=drow@false.org \
    --cc=gdb-patches@sources.redhat.com \
    --cc=msnyder@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox