On 08/25, Oleg Nesterov wrote: > > At least I certainly disagree with "Fixes: c1ae5c75e103" ;) > > uretprobe_perf_func/etc was designed for perf, and afaics this code still > works fine even if you run 2 perf-record's with -p PID1/PID2 at the same > time. > > BPF hacks/hooks were added later, so perhaps this should be fixed in the > bpf code, but I have no idea what bpftrace does... And I can't install bpftrace on my old Fedora 23 working laptop ;) Yes, yes, I know, I should upgrade it. For the moment, please forget about ret-probes. Could you compile this program #define _GNU_SOURCE #include <unistd.h> #include <sched.h> #include <signal.h> int func(int i) { return i; } int test(void *arg) { int i; for (i = 0;; ++i) { sleep(1); func(i); } return 0; } int main(void) { static char stack[65536]; clone(test, stack + sizeof(stack)/2, CLONE_VM|SIGCHLD, NULL); test(NULL); return 0; } and then do something like $ ./test & $ bpftrace -p $! -e 'uprobe:./test:func { printf("%d\n", pid); }' I hope that the syntax of the 2nd command is correct... I _think_ that it will print 2 pids too. But "perf-record -p" works as expected. Oleg.