public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
From: David Smith <dsmith@redhat.com>
To: Roland McGrath <roland@redhat.com>
Cc: Maynard Johnson <maynardj@us.ibm.com>,
	systemtap@sourceware.org,
	        "Frank Ch. Eigler" <fche@redhat.com>
Subject: Re: Backward compatibility for insn probe point
Date: Wed, 13 May 2009 15:04:00 -0000	[thread overview]
Message-ID: <4A0AE179.9050801@redhat.com> (raw)
In-Reply-To: <20090512181950.19BCCFC35D@magilla.sf.frob.com>

Roland McGrath wrote:
> Ok, that is on the verge of ringing a bell.
> 
> The single-step trap hit resets the single-step bit in the registers
> (arch/powerpc/kernel/traps.c:single_step_exception).  That needs to be
> turned on again before resuming.  The only place that this happens is
> utrace_quiescent->tracehook_enable_single_step.  You should get there via
> check_quiescent after each event report when UTRACE_ACTION_STATE_* is set.
> 
> It makes sense that ptrace does not see the same problem.  It always stops
> after each step trap, so it surely goes into utrace_quiescent to stop;
> there it will properly re-enable stepping when it gets resumed.  In the
> itrace scenario, you don't stop, so it's only the (apparently broken)
> bookkeeping that should ensure you get there.
> 
> In a reporting loop, update_action should be keeping UTRACE_ACTION_SINGLESTEP
> in its return value, so that check_quiescent see it and calls utrace_quiescent.
> You can see if some of that is going wrong.
> 
> (This is all entirely different in modern utrace.)

I poked around the kernel source some more, but couldn't see what was
going wrong.  So, I decided to attack the problem from a different
angle, based on what you said above.

I've changed the itrace code to stop the task after each step trap (so
that it acts more like ptrace).  I've tested this on several kernels
(2.6.18-141.el5/ppc, 2.6.18-128.1.10.el5/x86_64/i686, and
2.6.25-14.fc9.ppc64) and it seems to work correctly.

Does this seem like a reasonable work-around?  Could there be problems
with this approach?

Thanks.

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)

  reply	other threads:[~2009-05-13 15:04 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-01 21:59 Maynard Johnson
2009-04-27 21:01 ` David Smith
2009-04-29 13:56   ` Maynard Johnson
2009-04-29 21:08   ` Maynard Johnson
2009-04-30 18:00     ` David Smith
2009-04-30 20:48       ` Roland McGrath
2009-05-12 16:06         ` David Smith
2009-05-12 18:20           ` Roland McGrath
2009-05-13 15:04             ` David Smith [this message]
2009-05-13 18:24               ` Roland McGrath
2009-05-14 15:11                 ` David Smith
2009-05-14 18:41                   ` Roland McGrath
2009-05-14 19:01                   ` Maynard Johnson
2009-05-14 19:44                     ` David Smith
2009-05-14 21:36                       ` David Smith
2009-05-15 13:52                         ` ia64 hang when using itrace (was Re: Backward compatibility for insn probe point) David Smith

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=4A0AE179.9050801@redhat.com \
    --to=dsmith@redhat.com \
    --cc=fche@redhat.com \
    --cc=maynardj@us.ibm.com \
    --cc=roland@redhat.com \
    --cc=systemtap@sourceware.org \
    /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).