public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: Andrew Cagney <ac131313@redhat.com>
Cc: gdb@sources.redhat.com
Subject: Re: RFC: Two small remote protocol extensions
Date: Sun, 29 Jun 2003 07:51:00 -0000	[thread overview]
Message-ID: <20030629021605.GA18990@nevyn.them.org> (raw)
In-Reply-To: <3D93B6E6.8030805@redhat.com>

Going back through my inbox, I definitely dropped the ball on this one. 
Oops!

Here's a test case I just wrote, if you want to experiment with the
issue:

#include <pthread.h>

void foo (void)
{
}

void *thread_func (void *arg)
{
  int x;
  for (x = 0; x < 10; x++)
    foo ();
  return 0;
}

int main()
{
  pthread_t thr;
  void *ret;
  int x;

  pthread_create (&thr, NULL, thread_func, NULL);
  pthread_join (thr, &ret);
  for (x = 0; x < 10; x++)
    foo ();  
}


Compile, debug.  Set breakpoint on thread_func.  Say "next".  Native
GDB will do the obvious thing and step into the for loop.  Gdbserver
will switch to the first thread and report that we're stopped in
sigsuspend, one single-step off of the syscall.  My premise is that
GDB's behavior is correct.

On Thu, Sep 26, 2002 at 09:39:50PM -0400, Andrew Cagney wrote:
> 
> >OK, I suppose that makes sense.  It's pretty much where I was to begin
> >with: if Hc is non-zero, lock to that thread; if Hc is 0, resume all
> >threads, but where do we step?  How would you like to see us specify
> >this - I used Hs, a new step packet taking a thread argument might work
> >too... etc.
> 
> Yes, to come full circle, I can see two choices:
> 
> - (me back down) and Hg be made as per your proposal - as well as the 
> registers, it also specify the thread to step when there isn't thread 
> locking.

For the record, since I had to go look it up: this was the suggestion
that we use Hg to communicate the "selected" thread before doing a
non-scheduler-locked single step.

> - we define something properly

And this defining some other way to convey that information.

> > There's also the question of whether any other simulators or targets
> > handle this, and how they behave; I'm not familiar with them.  Do they
> > treat "HcTID, s" as single-step-one-thread-only?  I guess they probably
> > do.
> 
> I really don't know.  (For ``s'', should you be stepping all threads?)
> 
> Anyway, I think, to do this right, we're left needing a new packet.  Try:
> 
> 
> >> >   step one, stop others
> >
> >>
> >> Hardware single-step off of breakpoint.
> >> TPID, STEP, !OTH
> >> HcTID, s
> 
> HtTID;s

HtTID;s - single step just this thread.

> >> >   step one, continue others
> >
> >>
> >> Hardware single-step.
> >> TPID, STEP, OTH
> >> H???, s
> 
> HtPID,0;s
> 	or even:
> Ht0;s
> 	I.e., step all threads.  Let GDB sort out the mess.

What happened to step-one-continue-others?  I don't think step-all is
particularly useful.  Step-one-continue-others has its issues, but I
can see definite times when it is useful - for instance when one thread
makes a syscall which waits on a mutex.

The HtTID approach doesn't seem to say how other threads should be
treated.  Do we want:
 HtTIDs		step one
 HtTIDs;0c	step one cont others
 HtTIDc		cont one

et cetera?

Maybe allow:
 HtTID,TID,TIDs;0c

[Is 0 a valid TID?]

Could we deprecate Hg/Hc in favor of this, to avoid specifying all the
interactions?

And is there any hope of fixing this in 6.0? :(((

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

  parent reply	other threads:[~2003-06-29  2:16 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-01 19:25 Daniel Jacobowitz
2002-05-02  8:38 ` Andrew Cagney
2002-05-02  8:52   ` Daniel Jacobowitz
2002-05-02  9:39     ` Andrew Cagney
2002-05-02 12:14       ` Daniel Jacobowitz
2002-05-02 12:22         ` Kevin Buettner
2002-05-02 12:34           ` Daniel Jacobowitz
2002-05-02 13:13         ` Andrew Cagney
2002-05-02 14:09           ` Daniel Jacobowitz
2002-05-03 11:24             ` Andrew Cagney
2002-05-03 14:28               ` Daniel Jacobowitz
2002-05-03 15:18                 ` Andrew Cagney
2002-05-03 15:22                   ` Daniel Jacobowitz
2002-05-04 19:59                     ` Andrew Cagney
2002-05-02 13:13   ` Quality Quorum
2002-05-02 14:13     ` Daniel Jacobowitz
2002-05-03 13:07     ` Andrew Cagney
2002-08-16  7:30 ` Daniel Jacobowitz
2002-08-16  7:42   ` Andrew Cagney
2002-08-16  7:52     ` Daniel Jacobowitz
2002-08-16  8:21       ` Andrew Cagney
2002-08-22 19:23       ` Andrew Cagney
2002-08-22 19:36         ` Daniel Jacobowitz
2002-08-23  7:24         ` Quality Quorum
2002-08-23  7:26           ` Daniel Jacobowitz
2002-08-23  7:49             ` Quality Quorum
2002-08-23  8:57           ` Andrew Cagney
2002-08-23 11:16             ` Quality Quorum
2002-08-23 12:39               ` Andrew Cagney
2002-08-23 13:10                 ` Quality Quorum
2002-08-27 20:23                   ` Andrew Cagney
2002-08-28  8:31                     ` Quality Quorum
2002-08-28  9:44                       ` Andrew Cagney
2002-08-28  9:49                         ` Daniel Jacobowitz
2002-08-22 21:08       ` Andrew Cagney
2002-08-23  5:44         ` Daniel Jacobowitz
2002-08-23 12:10           ` Andrew Cagney
2002-08-23 12:53           ` Andrew Cagney
2002-08-23 13:15             ` Daniel Jacobowitz
2002-08-27 21:07               ` Andrew Cagney
2002-08-28  6:33                 ` Daniel Jacobowitz
2002-09-25  8:51                   ` Daniel Jacobowitz
2002-09-25 11:17                     ` Andrew Cagney
2002-09-26 18:39                   ` Andrew Cagney
2002-09-26 18:48                     ` Andrew Cagney
2003-06-29  7:51                     ` Daniel Jacobowitz [this message]
2003-09-03 23:41                       ` Andrew Cagney
2003-09-17 15:51                         ` Daniel Jacobowitz
2003-09-17 16:19                           ` Andrew Cagney
2003-09-17 16:23                             ` Daniel Jacobowitz
2003-09-22  0:27                               ` Andrew Cagney
2003-09-22  1:01                                 ` Daniel Jacobowitz
2003-09-22  3:02                                   ` Andrew Cagney

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=20030629021605.GA18990@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=ac131313@redhat.com \
    --cc=gdb@sources.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).