public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
From: Mark Wielaard <mjw@redhat.com>
To: Roland McGrath <roland@redhat.com>
Cc: systemtap@sources.redhat.com
Subject: Re: [Bug uprobes/11672] utrace_report_syscall_exit crash
Date: Mon, 14 Jun 2010 14:49:00 -0000	[thread overview]
Message-ID: <1276507085.4140.27.camel@springer.wildebeest.org> (raw)
In-Reply-To: <20100614084019.7F188408C2@magilla.sf.frob.com>

On Mon, 2010-06-14 at 01:40 -0700, Roland McGrath wrote:
> >       (__stp_utrace_attach): Loop on -ERESTARTSYS after utrace_barrier.
> >       (__stp_utrace_task_finder_target_quiesce): Likewise.
> 
> That is a busy-wait loop, because -ERESTARTSYS means "signal is pending"
> and that stays true without any blocking until you let it get back to user
> mode (or almost, i.e. signal handling).  I don't really understand the
> context of where these functions get called.  I'm guessing it is in some
> control thread belonging to stapio or something like that.  In that case,
> the signal pending is a SIGINT killing stapio or something like that I
> suppose.  Is that the case?

This is called from the task finder cleanup code and the utrace probe
exit code before the module tries to unload. There could be some signals
involved since we might unload the module by forking, executing and
waiting for a child, runstap -d, process to do it (this might happen
when the stap process gets a ^C). It also happens when a script calls
exit(), or someone explicitly calls rmmod on us. Precise description can
be found in runtime/transport/transport.txt (SHUTDOWN AND UNLOADING).

> This is a relatively "safe" busy-wait.  utrace_barrier will return 0 when
> the tracee is all clear, not short-circuit because of signal_pending()
> unless it actually has to block.  It's waiting for the tracee on the other
> CPU to complete your callback, which should be pretty quick.  But it's
> still a busy-wait that suddenly chews CPU in a spurt, and all quite fragile.

Busy-waiting is bad, so if there is an alternative that would be nice.
All we need is that if after a utrace_control UTRACE_DETACH we get an
-EINPROGRESS that we can wait till we are sure any pending handlers have
finished and that the detach fully succeeded.

Thanks,

Mark

  reply	other threads:[~2010-06-14  9:18 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-08 11:07 [Bug uprobes/11672] New: " mjw at redhat dot com
2010-06-08 11:49 ` [Bug uprobes/11672] " fche at redhat dot com
2010-06-08 15:51 ` mjw at redhat dot com
2010-06-08 15:54 ` mjw at redhat dot com
2010-06-09 22:26 ` mjw at redhat dot com
2010-06-14 14:08   ` Roland McGrath
2010-06-14 14:49     ` Mark Wielaard [this message]
2010-06-14 21:06       ` Roland McGrath
2010-06-14 21:32         ` Mark Wielaard
2010-06-14 19:53     ` Frank Ch. Eigler
2010-06-16 14:30 ` mjw at redhat dot com

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=1276507085.4140.27.camel@springer.wildebeest.org \
    --to=mjw@redhat.com \
    --cc=roland@redhat.com \
    --cc=systemtap@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).