From: Pedro Alves <pedro@codesourcery.com>
To: "Ulrich Weigand" <uweigand@de.ibm.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [rfc] Preferred thread event reporting: Linux native target
Date: Fri, 15 Aug 2008 23:28:00 -0000 [thread overview]
Message-ID: <200808152354.32763.pedro@codesourcery.com> (raw)
In-Reply-To: <200808142150.m7ELoMaw023976@d12av02.megacenter.de.ibm.com>
On Thursday 14 August 2008 22:50:22, Ulrich Weigand wrote:
> Pedro Alves wrote:
> > > -- this is actually simply the currently selected thread
> > > (i.e. the current value of inferior_ptid).
> >
> > Disagreed. inferior_ptid will change if an event happens in
> > another thread while you're stepping, but the core decides the event
> > was not a good reason to stop. E.g., thread hopping.
>
> Hmm, but if we "thread hop" inferior_ptid should be prefered
> anyway (to get the internal "thread hop" action over with as
> quickly as possible),
When we thread hop, we tell the target to only allow a single
thread to run. On linux, there's no way to could already have a
cached event in the thread the user is stepping at
this point, otherwise, we'd not have detected the need for a
thread hop. So, right after resuming to do the thread hop, if
there's any other cached event to select from, because
they were cached when we reported the stop that originated
the thread hop, it won't be from the thread the user was
stepping.
But, this above is moot currently, because when we
thread hop, we enter infwait_thread_hop_state, which
ends up forcing linux_nat_wait to only return with the ptid of
the thread we're hopping, thus, the thread hop action gets over
as quickly as possible already.
> and afterwards we're back to the thread
> the user is looking at, right?
Well, in all-stop, there's nothing doing that currently. when
you switch inferior_ptid (in all-stop mode) to handle a
possible stop, and then you decide you should not stop, there's
nothing reverting back to the previous thread. inferior_ptid will
stay pointing to the last thread you resumed (the hopping thread),
until you hit another stop event, and context_switch to the thread
that took it.
> > For my series to go in, every target much register at least the main
> > thread in GDB's thread tables, and as it happens, I think AIX
> > is the only target I don't have covered, or that I know of
> > no one covering.
>
> I can test AIX if necessary. Do you have a patch?
I stratched my head quite a bit staring at aix-thread.c/sync_threadlists
and its use of ptid_cmp. I still can't tell if/what I should do there.
Also, I can't tell if rs6000_wait can ever return a ptid
different from pid_to_ptid(main_process_pid), (or -1).
Basically, I need to:
1) make sure the core never gets a thread related event
that corresponds to a thread the core doesn't know
about yet.
2) #1 implies that every target should register the main
thread, even when debugging a single-threaded app.
rs6000-nat.c, being a ptrace based target, already has that
covered by these:
http://sourceware.org/ml/gdb-patches/2008-08/msg00170.html
http://sourceware.org/ml/gdb-patches/2008-08/msg00171.html
3) #2 implies that a thread_stratum layer should decorate the
main thread's ptid with thread id info, instead of adding it
again. That's thread_change_ptid from:
http://sourceware.org/ml/gdb-patches/2008-08/msg00170.html
--
Pedro Alves
next prev parent reply other threads:[~2008-08-15 23:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-14 20:40 Ulrich Weigand
2008-08-14 21:20 ` Pedro Alves
2008-08-14 21:51 ` Ulrich Weigand
2008-08-15 18:22 ` Michael Snyder
2008-08-18 16:01 ` Ulrich Weigand
2008-08-15 23:28 ` Pedro Alves [this message]
2008-08-18 16:23 ` Daniel Jacobowitz
2008-08-18 17:01 ` Ulrich Weigand
2008-08-18 17:04 ` Daniel Jacobowitz
2008-08-18 17:18 ` Pedro Alves
2008-08-18 17:15 ` Pedro Alves
2008-08-18 18:19 ` Ulrich Weigand
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=200808152354.32763.pedro@codesourcery.com \
--to=pedro@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=uweigand@de.ibm.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