This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: probe point "process(PATH).function(*).return" not ready yet?
- From: David Smith <dsmith at redhat dot com>
- To: maliubiao <maliubiao at gmail dot com>
- Cc: systemtap at sourceware dot org
- Date: Wed, 14 Aug 2013 08:33:59 -0500
- Subject: Re: probe point "process(PATH).function(*).return" not ready yet?
- References: <CAFiE4-4BZFRHTi=fr2LFFOFZHw+N7nHh+ywsWajswY26Uqb_DQ at mail dot gmail dot com>
On 08/14/2013 07:23 AM, maliubiao wrote:
> Code:
> probe process("../build/lpg").function("*").reutnr {
> printf("%s\n", probefunc());
> }
> Result:
> semantic error: while resolving probe point: identifier 'process' at
> hello.stp:8:7
> source: probe process("../build/lpg").function("*").return {
> ^
>
> semantic error: process return probes not available [man error::inode-uprobes]
> Pass 2: analysis failed. [man error::pass2]
>
> This probe point is in the systemtap language reference, what's wrong?
> thanks .
>
Here is a short history of uprobes (the feature that gives systemtap
user probes):
- original uprobes (with both function entry and return probes): RHEL5
era kernels (needs kernel utrace), in an external kernel module
- uprobes v2 (with both function entry and return probes): RHEL6 era
kernels (needs kernel utrace), in an external kernel module
- inode uprobes (with function entry probes): current kernels, doesn't
need kernel utrace, built into the kernel
Your kernel has inode uprobes, which doesn't support function return
probes yet. There have been some work in this area, but I don't believe
that functionality has quite made it into the kernel yet.
In the meantime, you might be able to switch to the dyninst runtime
(--runtime=dyninst or --dyninst). This is a new, somewhat experimental
runtime, that does probing purely in userspace. You won't be able to use
dyninst if your script uses any kernel probing features (like
'kernel.function').
--
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)