On 08/27, Jiri Olsa wrote:
>
> On Tue, Aug 27, 2024 at 12:29:38AM +0200, Oleg Nesterov wrote:
> >
> > So, can you reproduce the problem reported by Tianyi on your setup?
>
> yes, I can repduce the issue with uretprobe on top of perf event uprobe
...
> -> 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
Confused...
I naively thought that if bpftrace uses bpf_uprobe_multi_link_attach() then
it won't use perf/trace_uprobe, and uretprobe-hit will result in
// current->pid == 1018
for_each_uprobe_consumer {
// consumer for task 1019
uprobe_multi_link_ret_handler
uprobe_prog_run
-> current->mm != link->task->mm, return
// consumer for task 1018
uprobe_multi_link_ret_handler
uprobe_prog_run
-> current->mm == link->task->mm, run bpf
}
> I think the uretprobe_dispatcher could call filter as suggested in the
> original
> patch..
OK, agreed.
> but I'm not sure we need to remove the uprobe from handle_uretprobe_chain
> like we do in handler_chain..
Me too. In any case this is another issue.
Oleg.