public inbox for archer@sourceware.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: archer@sourceware.org, utrace-devel@redhat.com
Subject: Re: BUG: gdb && notification packets (Was: gdbstub initial code, v12)
Date: Wed, 06 Oct 2010 17:23:00 -0000	[thread overview]
Message-ID: <20101006171953.GA28683@redhat.com> (raw)
In-Reply-To: <201010051930.38721.pedro@codesourcery.com>

On 10/05, Pedro Alves wrote:
>

(reordered)

> On Tuesday 05 October 2010 18:27:29, Oleg Nesterov wrote:
>
> > So, I strongly believe gdb is buggy and should be fixed.
>
> Fix your stub to implement vCont;s/c(/S/C).

First of all, I confirm that when I added the (incomplete right
now) support for vCont;s the problem goes away, gdb never forgets
to send the necessary vStopped to consume all stop-reply packets.

Thanks Pedro.

> > The more or less "typical" transcript is:
> >
> > 	[... snip ...]
> > 	=> s
>
> This is already wrong.
>
> "The stub must support @samp{vCont} if it reports support for
> multiprocess extensions (@pxref{multiprocess extensions})."

Cough. Previously I was told here (on archer@sourceware.org) that
Hc + s/c is enough and I shouldn't worry about vCont;s/c ;)

Currently ugdb only supports vCont;t because otherwise there is
obviously no way to stop all threads.

> The stub must also support vCont for non-stop, though I'll give you
> that it doesn't appear to be mentioned in the manual,

Yes, the manual doesn't explain this. Quite contrary, the decsription
of 'vCont?' definitely looks as if the stub is not obliged to implement
all vCont commands.

And, if the stub must support vCont for non-stop, then why gdb
doesn't complain after 'vCont?' but falls back to '$s' ?

> Look at remote.c:remote_resume, and you'll see that gdb does not
> wait for the "OK" after 'c'/'s'/'S'/'C' in non-stop mode.

Then gdbserver should be fixed? It does send "OK" in response to '$s',
that is why ugdb does this.

And what should be replied back to '$s', nothing? Very strange.
But seems to work... And yes, this explains the hang, gdb thinks
that this "OK" is connected to vStopped.

Again, the documentation is very confusing. Looking at
remote_resume()->remote_vcont_resume()->getpkt() I think that
vCont;s needs "OK". Looking at "D.3 Stop Reply Packets" in
gdb.info I do not see any difference between `s' and `vCont'.

So. I still belive that something is wrong with gdb/gdbserever
but I don't care.


In any case ugdb should fully support vCont, hopefully I'll finish
this tomorrow. Could you answer a couple of questions?

1. Say, $vCont;s or $vCont;s:p-1.-1

   I assume, this should ignore the running threads, correct?
   IOW, iiuc this 's' applies to all threads which we already
   reported as stopped.

2. Say, $vCont;c:pPID.TID;s:p-1.-1

   Can I assume that gdb can never send this request as

   	$vCont;s:p-1.-1;c:pPID.TID ?

   If yes, then the implementation will be much simpler, I can
   add something like gencounters to ugdb_thread/process. Otherwise
   this needs more complications to figure out what should be done
   with each tracee.

Thanks,

Oleg.

  parent reply	other threads:[~2010-10-06 17:23 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-30 18:27 gdbstub initial code, v12 Oleg Nesterov
2010-10-04 18:14 ` Oleg Nesterov
2010-10-05 17:31   ` BUG: gdb && notification packets (Was: gdbstub initial code, v12) Oleg Nesterov
2010-10-05 18:30     ` Pedro Alves
2010-10-05 18:35       ` Pedro Alves
2010-10-06 17:23       ` Oleg Nesterov [this message]
2010-10-06 18:32         ` Pedro Alves
2010-10-07 23:03           ` Oleg Nesterov
2010-10-08  0:03             ` Pedro Alves
2010-10-08  0:23               ` Oleg Nesterov

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=20101006171953.GA28683@redhat.com \
    --to=oleg@redhat.com \
    --cc=archer@sourceware.org \
    --cc=pedro@codesourcery.com \
    --cc=utrace-devel@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).