Проблемы со сценарием systemtap

Я хочу написать небольшой скрипт, который определяет, какая функция использует системный вызов mmap:

#! /usr/bin/env stap
probe syscall.mmap.return {
        if ( execname()=="java")
                printf ("%s mmap caller\n", caller())
}

Но это возвращает:

[root@gclimo01 stap]# stap  -v mmap_caller.stp 
Pass 1: parsed user script and 85 library script(s) using 198360virt/26732res/2944shr kb, in 210usr/50sys/264real ms.
Pass 2: analyzed script: 1 probe(s), 4 function(s), 4 embed(s), 0 global(s) using 355384virt/51680res/4048shr kb, in 650usr/350sys/1000real ms.
Pass 3: translated to C into "/tmp/stapwIxSzq/stap_a1823a5a24071fdf3118f618597b4ab6_7801_src.c" using 352824virt/54320res/6828shr kb, in 190usr/80sys/283real ms.
/tmp/stapwIxSzq/stap_a1823a5a24071fdf3118f618597b4ab6_7801_src.c: In function 'function_caller_addr':
/tmp/stapwIxSzq/stap_a1823a5a24071fdf3118f618597b4ab6_7801_src.c:646: error: dereferencing pointer to incomplete type
make[1]: *** [/tmp/stapwIxSzq/stap_a1823a5a24071fdf3118f618597b4ab6_7801_src.o] Error 1
make: *** [_module_/tmp/stapwIxSzq] Error 2
WARNING: make exited with status: 2
Pass 4: compiled C into "stap_a1823a5a24071fdf3118f618597b4ab6_7801.ko" in 1170usr/1120sys/2207real ms.
Pass 4: compilation failed.  Try again with another '--vp 0001' option.

Моя система RHEL 6.3, Linux xxxxxxxxx 2.6.32-279.1.1.el6.x86_64 #1 SMP Ср 20 июня 11:41:22 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

любой совет?

1 ответ

Это было http://sourceware.org/bugzilla/show_bug.cgi?id=14079, исправлено в systemtap 1.8 с

commit 4107dbc2c88536c3374a68948c7344af8c8e75aa
Author: Mark Wielaard <mjw@redhat.com>
Date:   Tue May 8 19:59:07 2012 +0200

PR14079 - caller() pass-4 error if no uretprobes in script

caller() is odd in that it tries to do both kernel and user caller.
There is no ucaller(). Move it into its own tapset and include the
right uprobes related structures.

* runtime/uprobes-inc.h: New include file to be included in ...
* runtime/stack.c: here and ...
* tapset/context-caller.stp: here. New tapset, with just the caller context
  function, removed from ...
* tapset/context-unwind.stp: here.
* doc/SystemTap_Tapset_Reference/tapsets.tmpl: Also include context-caller.stp.
Другие вопросы по тегам