Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <mark.kettenis@xs4all.nl>
To: mfouts@danger.com, gdb@sourceware.org, mchen@danger.com
Cc: msnyder@specifix.com
Subject: Re: Why does gdb use its own thread ids internally rather than the ?tid from the underlying thread implementation?
Date: Mon, 03 Mar 2008 20:20:00 -0000	[thread overview]
Message-ID: <200803032019.m23KJldk019460@brahms.sibelius.xs4all.nl> (raw)
In-Reply-To: <1204574228.19253.570.camel@localhost.localdomain> 	(msnyder@specifix.com)

> From: "Michael Snyder" <msnyder@specifix.com>
> Date: Mon, 03 Mar 2008 11:57:08 -0800
> 
> On Mon, 2008-03-03 at 10:38 -0800, Martin Fouts wrote:
> > Hi,
> > 
> > We're trying to optimize the NetBSD 4.0 implementation of pthreads,
> > which has an M:N thread implementation, and are having some trouble
> > getting gdb to work because the underlying thread id for a thread can
> > change in an M:N implementation.
> > 
> > Can anyone provide any insight into why gdb doesn't use the underlying
> > thread id?
> 
> Sure.  I think the main reason is that the underlying thread id
> is usually something awkward for a user to type (like an 8-digit
> hex number).  GDB supplies a counting number, just like for
> breakpoints, so that you can type "thread 2" instead of 
> "thread 77af21bc".
> 
> For another thing, gdb tries to present a more-or-less uniform
> user interface across platforms.  Underlying thread ids are 
> different from one platform to the next.
> 
> > Or suggestions about how to accommodate M:N without zombie queues?
> 
> Have you looked at the linux and solaris implementations?
> They both have M:N thread models.

Linux doesn't.  And even Solaris uses a 1:1 model by default nowadays.
And I really doubt the code for M:N ever worked properly in GDB.

I'm afraid that implementing GDB support for an M:N threading model is
a largely unsolved problem.

Given the fact that GDB doesn't even have support for kernel-level
threads (or LWP's) on NetBSD, I'd start with getting that working.
After that, it might be possible by implementing an additional stratum
on top of that, that does the LWP to user-level thread ID translation,
and adds in the threads that are not bound to an LWP.


  parent reply	other threads:[~2008-03-03 20:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-03 18:42 Why does gdb use its own thread ids internally rather than the tid " Martin Fouts
2008-03-03 19:57 ` Michael Snyder
2008-03-03 20:09   ` Daniel Jacobowitz
2008-03-03 20:20   ` Mark Kettenis [this message]
2008-03-03 20:38     ` Why does gdb use its own thread ids internally rather than the ?tid " Michael Snyder
2008-03-03 20:56       ` Mark Kettenis

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=200803032019.m23KJldk019460@brahms.sibelius.xs4all.nl \
    --to=mark.kettenis@xs4all.nl \
    --cc=gdb@sourceware.org \
    --cc=mchen@danger.com \
    --cc=mfouts@danger.com \
    --cc=msnyder@specifix.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