patm@pdx.edu wrote:
I was thinking the java program is pretty obscure, so here is a
much simpler way to determine some of the probe aliases that are
failing, in this case lets look at syscalls.stp:
$ grep syscall.*= /usr/share/systemtap/tapset/syscalls.stp | \
awk '{ print $1 " " $2 "{}" }' | \
stap -p2 -u -
And either a list of failed probe alias resolutions will be printed
to stderr, or a list of probe aliases, variables, and functions
will be printed out to stdout.
On my FC6.93 system, here are the errors the above outputs:
semantic error: no match for probe point while resolving probe point
syscall.compat_getitimer
semantic error: no match for probe point while resolving probe point
syscall.compat_getitimer.return
semantic error: no match for probe point while resolving probe point
syscall.get_mempolicy
semantic error: no match for probe point while resolving probe point
syscall.get_mempolicy.return
semantic error: no match for probe point while resolving probe point
syscall.mbind
semantic error: no match for probe point while resolving probe point
syscall.mbind.return
semantic error: no match for probe point while resolving probe point
syscall.mmap
semantic error: no match for probe point while resolving probe point
syscall.mmap.return
Let's look at the first one for a sec. The system call
"compat_getitimer" doesn't exist on my x86 FC6.93 system. It does
exist on a x86_64 RHEL4 system I have access to.
So, how does this hurt me? The below 2 stap commands still work:
# stap -p2 -u -e 'probe syscall.* {}'
# stap -p2 -u -e 'probe syscall.*getitimer {}'
The only thing that doesn't work is:
# stap -p2 -u -e 'probe syscall.compat_getitimer {}'
So, the only error I get is when I explicitly list the system call that
doesn't exist on my current arch and kernel. I could see where if you
were writing a script targeting either multiple architectures or
multiple kernel versions that might bother you. However, the solution
is easy - make that probe optional:
# stap -p2 -u -e 'probe syscall.compat_getitimer ? { }'