Sorry for another reply, I just noticed I missed one part of your email... On 08/27, Jiri Olsa wrote: > > -> uretprobe-hit > handle_swbp > uprobe_handle_trampoline > handle_uretprobe_chain > { > > for_each_uprobe_consumer { > > // consumer for task 1019 > uretprobe_dispatcher > uretprobe_perf_func > -> runs bpf program > > // consumer for task 1018 > uretprobe_dispatcher > uretprobe_perf_func > -> runs bpf program > > } > } > > and I think the same will happen for perf record in this case where instead of > running the program we will execute perf_tp_event Hmm. Really? In this case these 2 different consumers will have the different trace_event_call's, so // consumer for task 1019 uretprobe_dispatcher uretprobe_perf_func __uprobe_perf_func perf_tp_event won't store the event because this_cpu_ptr(call->perf_events) should be hlist_empty() on this CPU, the perf_event for task 1019 wasn't scheduled in on this CPU... No? Ok, looks like I'm totally confused ;) Oleg.