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.