It is most easily demonstrated by running small_demos/proc_snoop.stp. But simple reproducer equivalent is: probe signal.send { printf("signal sent %d (%s) to task %d\n", sig, sig_name, task); } Retrieval of the task argument causes a failure. If task is not included in the probe, it works fine. Results: sudo stap -vv ./signal_bug.stp (snip) semantic error: unable to find local 't' near pc 0xffffffff8103fcfc (alternatives: sig q p flags ret): identifier '$t' at /usr/local/share/systemtap/tapset/signal.stp:78:12 semantic error: unable to find local 't' near pc 0xffffffff8103fcfc (alternatives: sig q p flags ret): identifier '$t' at :78:12 Snippet of relavant signal.stp code piece: probe _signal.send.part3 = kernel.function("send_sigqueue") { name = "send_sigqueue" %( kernel_v > "2.6.25" %? task = $t sig = $q->info->si_signo %: task = $p sig = $sig %) My system setup: rpm -q kernel kernel-devel kernel-debuginfo kernel-2.6.25.10-86.fc9.x86_64 kernel-devel-2.6.25.10-86.fc9.x86_64 kernel-debuginfo-2.6.25.10-86.fc9.x86_64 uname -a stap -V Linux localhost.localdomain 2.6.25.10-86.fc9.x86_64 #1 SMP Mon Jul 7 20:23:46 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux SystemTap translator/driver (version 0.7.1/0.133 git branch master, commit 7795c7e7) Copyright (C) 2005-2008 Red Hat, Inc. and others This is free software; see the source for copying conditions.
I'll take a shot at investigating this, and grep'ping the kernel source to see if anything has changed in that particular revision.
send_sigqueue in linux-2.6.25.x86_64/kernel/signal.c uses p for task_struct, not t so the conditional: %( kernel_v > "2.6.25" %? task = $t appears incorrect?
Frank mentioned that kernel_v may be reporting 2.6.25.10 as the kernel version string on Fedora perhaps casuing the < 2.6.25 version comparison to be false. I'm not sure how to check the kernel_v argument as it is used in conditionals. Page 28 of the language reference guide describes it as: -- kernel v refers to the kernel version number only, such as “2.6.13”. Should kernel_v only report the first 3 elements of a version number?
Created attachment 2834 [details] Fix for 6752; tweak conditional to test for .10 at end of kernel version string Patch to adjust kernel_v check to account for 2.6.25.10.
Created attachment 2835 [details] Fix for 6752; tweak conditional to test for >= 2.6.26 end of kernel version string Path to change conditional to >= 2.6.26
Fixed with attached patch.