From: Daniel Jacobowitz <drow@false.org>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org
Subject: Re: linux native async mode support
Date: Mon, 17 Mar 2008 22:05:00 -0000 [thread overview]
Message-ID: <20080317220515.GA1309@caradoc.them.org> (raw)
In-Reply-To: <200803171605.24276.pedro@codesourcery.com>
On Mon, Mar 17, 2008 at 04:05:24PM +0000, Pedro Alves wrote:
> > > @@ -516,6 +707,12 @@ linux_child_follow_fork (struct target_o
> > > target_detach (which does other necessary cleanup). */
> > >
> > > push_target (ops);
> > > +
> > > + if (async_was_enabled && !linux_nat_async_enabled)
> > > + /* target_detach may disable async depending on multi-threaded
> > > + enabled or not. Reenable it if needed. */
> > > + linux_nat_enable_async ();
> > > +
> > > linux_nat_switch_fork (inferior_ptid);
> > > check_for_thread_db ();
> >
> > This will drain the queue, losing any pending events. In non-stop
> > mode I can imagine that causing trouble. Maybe we need to avoid
> > target_detach now.
> >
>
> Yeah. Here's how I fixed it: target_detach, when the target is
> multi-threaded, would call thread_db_detach, which calls
> target_mourn_inferior. The mourn inferior call (although most targets
> don't mourn on detach), is there AFAICT mostly to reset
> using_thread_db. There's nothing in linux_nat_mourn_inferior that
> we'd miss. Notice that linux_nat_detach doesn't mourn, so a
> single-threaded inferior doesn't get mourned.
>
> So, I split linux_nat_detach in two (linux_nat_detach_inferior, and
> linux_nat_detach proper which calls linux_nat_detach_inferior), and
> added a re_check_for_thread_db, to be used after following the child,
> so thread_db knows about the new current inferior.
I don't like this :-( There's more that thread_db_attach does. If we
don't disable thread event reporting, then it's likely to stop and
wait for the debugger the next time it creates a thread. Yes, this
was already broken when following a vfork. And it may be broken if
the child creates threads when we follow the parent of a fork. But
if we can avoid breaking it further, that would be nice.
Do we really have to disable async when detaching? Maybe we could do
so only at attach and create, if it doesn't matter how async is set
the rest of the time. Remove the normal_mask / blocked_mask bits
from linux_nat_disable_async and call it in else blocks after the
two calls to linux_nat_enable_async. What do you think?
Other than this one bit, the new patch looks good to me.
--
Daniel Jacobowitz
CodeSourcery
next prev parent reply other threads:[~2008-03-17 22:05 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-14 8:11 Pedro Alves
2008-03-14 21:17 ` Daniel Jacobowitz
2008-03-17 16:05 ` Pedro Alves
2008-03-17 22:05 ` Daniel Jacobowitz [this message]
2008-03-18 23:27 ` Pedro Alves
2008-03-18 23:58 ` Daniel Jacobowitz
2008-03-21 15:55 ` Daniel Jacobowitz
2008-03-21 17:19 ` Pedro Alves
2008-03-28 14:48 ` Maciej W. Rozycki
2008-03-28 16:07 ` Pedro Alves
2008-03-28 16:13 ` Daniel Jacobowitz
2008-03-28 16:40 ` Pedro Alves
2008-03-18 0:06 ` Nick Roberts
2008-03-18 23:28 ` Pedro Alves
2008-03-19 3:59 ` Nick Roberts
2008-03-19 16:25 ` Luis Machado
2008-03-19 23:19 ` Pedro Alves
2008-03-19 23:26 ` Pedro Alves
2008-03-20 1:58 ` Nick Roberts
2008-03-21 15:47 ` Daniel Jacobowitz
2008-03-21 15:49 ` Daniel Jacobowitz
2008-03-21 23:02 ` Nick Roberts
2008-03-22 1:25 ` Daniel Jacobowitz
2008-03-22 22:06 ` Nick Roberts
2008-04-01 14:00 ` Daniel Jacobowitz
2008-04-01 15:17 ` Vladimir Prus
2008-04-01 20:09 ` Nick Roberts
2008-04-04 12:34 ` Vladimir Prus
2008-04-05 17:20 ` Nick Roberts
2008-04-05 22:07 ` Vladimir Prus
2008-04-07 0:06 ` Nick Roberts
2008-04-07 2:33 ` Nick Roberts
2008-03-18 2:47 ` Nick Roberts
2008-03-14 23:10 ` Nick Roberts
2008-03-15 1:58 ` Pedro Alves
2008-03-15 3:11 ` Daniel Jacobowitz
2008-03-17 23:41 ` Nick Roberts
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=20080317220515.GA1309@caradoc.them.org \
--to=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