From: Vladimir Prus <vladimir@codesourcery.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org, Daniel Jacobowitz <drow@false.org>
Subject: Re: [RFA] Make continuations per-thread.
Date: Fri, 02 May 2008 11:51:00 -0000 [thread overview]
Message-ID: <200805021551.11725.vladimir@codesourcery.com> (raw)
In-Reply-To: <200805021234.12472.pedro@codesourcery.com>
On Friday 02 May 2008 15:34:11 Pedro Alves wrote:
> A Friday 02 May 2008 04:00:12, Daniel Jacobowitz wrote:
> > On Thu, Apr 24, 2008 at 07:45:38PM +0300, Vladimir Prus wrote:
> > > Right now, continuations are global. This means that if we're doing
> > > 'finish' in one thread, then we cannot do 'finish' or anything that
> > > also uses continuations, in any other thread. This seems unnecessary
> > > limitation, and this patch makes continuations per-thread.
> > >
> > > Further into non-stop series, it really allows me to do 'finish' or
> > > 'step' in several threads independently.
> > >
> > > OK?
> >
> > Could you explain why this is safe? We will do continuations for the
> > thread which reports an event only. So it seems like continuations
> > for other threads will linger in their struct thread.
> >
> > For example, if we finish from one thread and hit a breakpoint in
> > another thread before the finish returns.
>
> That's true. Attached is what we have next on the non-stop
> series to fix that. I'm not thrilled by it, but there are intermediate
> context switches in handle_inferior_event that make it much uglier to try
> to not make it centralized. This is one of the things that gets much
> better looking when we switch completelly to always-a-thread, and
> get rid of context-switching. I'm introducing another variable, instead of
> using previous_inferior_ptid, which would be a good candidate, but I have
> other plans for it.
This is only for intermediate continations. For ordinary continuations, not
running them when we hit a breakpoint in another thread is desirable. Why should
a breakpoint in some other thread abort "finish"? Note that in current gdb,
hitting a breakpoint in unrelated thread does not abort "next" -- say we
did next, inserted step resume breakpoint, and then hit breakpoint in some other
thread. Then, the step resume breakpoint will not be removed. If we decide to
continue the program, we'll eventually hit it.
I don't see any problem with continuations been kept for a given thread
for a long time. It's not an unbounded amount of continuations -- if we get an
event in this thread, continuation will run, and if we don't get an event,
we won't add any futher continuations.
- Volodya
next prev parent reply other threads:[~2008-05-02 11:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-24 23:08 Vladimir Prus
2008-05-02 3:00 ` Daniel Jacobowitz
2008-05-02 11:34 ` Pedro Alves
2008-05-02 11:43 ` Pedro Alves
2008-05-02 11:51 ` Vladimir Prus [this message]
2008-05-02 13:24 ` Daniel Jacobowitz
2008-05-02 13:30 ` Vladimir Prus
2008-05-02 13:44 ` Daniel Jacobowitz
2008-05-02 15:33 ` Ulrich Weigand
2008-05-06 19:02 ` Pedro Alves
2008-05-02 13:51 ` Pedro Alves
2008-05-02 14:15 ` Vladimir Prus
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=200805021551.11725.vladimir@codesourcery.com \
--to=vladimir@codesourcery.com \
--cc=drow@false.org \
--cc=gdb-patches@sourceware.org \
--cc=pedro@codesourcery.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