On 08/27, Jiri Olsa wrote: > > On Tue, Aug 27, 2024 at 12:08:39PM +0200, Jiri Olsa wrote: > > > > > > - if (link->task && current->mm != link->task->mm) > > > + if (link->task && !same_thread_group(current, link->task)) > > > > > > in uprobe_prog_run() to make "filter by *process*" true, but this won't > > > fix the problem with link->task->mm == NULL in uprobe_multi_link_filter(). > > > > would the same_thread_group(current, link->task) work in such case? > > (zombie leader with other alive threads) > > should uprobe_perf_filter use same_thread_group as well instead > of mm pointers check? uprobe_perf_filter or uprobe_multi_link_filter ? In any case I don't think same_thread_group(current, whatever) can work. For example, uc->filter() can be called from uprobe_register() paths. In this case "current" is the unrelated task which does, say, perf-record, etc. Even if uc->filter() was only called from handler_chain(), it couldn't work, think of UPROBE_HANDLER_REMOVE. See also another email I sent a minute ago. Oleg.