This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [PATCH 0/2] initscript: add support for uprobes scripts
- From: Josh Stone <jistone at redhat dot com>
- To: Stefan Hajnoczi <stefanha at redhat dot com>, systemtap at sourceware dot org
- Cc: "Frank Ch. Eigler" <fche at redhat dot com>, Jonathan Lebon <jlebon at redhat dot com>
- Date: Fri, 08 Aug 2014 10:20:58 -0700
- Subject: Re: [PATCH 0/2] initscript: add support for uprobes scripts
- Authentication-results: sourceware.org; auth=none
- References: <1407479623-30970-1-git-send-email-stefanha at redhat dot com>
On 08/07/2014 11:33 PM, Stefan Hajnoczi wrote:
> The initscript currently fails for user-space probing scripts on systems where
> uprobes.ko is built from source by stap(1). This is because the initscript
> uses a two-phase "compile and then run" approach:
>
> The uprobes.ko module is generated during the compile phase but not copied into
> the cache directory where modules are placed for the run phase. The staprun(8)
> command fails because the script module cannot be loaded without uprobes.ko.
This confused me at first, because uprobes.ko *is* cached with a
kernel-hashed name -- see uprobes_pass() in buildrun.cxx. But that's in
SYSTEMTAP_DIR (default ~/.systemtap), and the initscript is talking
about its own CACHE_PATH in /var/cache/systemtap. So, ok.
I'm not terribly keen on using -k to find uprobes. But at a minimum, if
we do this, that "Keeping temp..." string is translatable, so you need
to ensure stap runs in English.
It's already using -m, which triggers systemtap_session::save_module to
copy the script module to $PWD at the end of passes_0_4() -- maybe this
should also save uprobes.ko if needed? Or we could add an explicit
option to request this behavior. Then the initscript can simply look in
its own tmpdir to see if uprobes.ko was created.
> These patches address the issue by copying uprobes.ko into the cache directory.
> If a script specifies the -u option in its initscript configuration file,
> staprun(8) will receive the path to uprobes.ko.
>
> There is no change in behavior on systems that do not build uprobes.ko.
>
> Stefan Hajnoczi (2):
> initscript: copy uprobes.ko to cache directory
> initscript: allow scripts to load uprobes
>
> initscript/systemtap.in | 24 +++++++++++++++++++++---
> 1 file changed, 21 insertions(+), 3 deletions(-)
>