Re: [BUG] list corruption while enabling multi call uprobes via perf

From: Masami Hiramatsu
Date: Thu Jan 09 2020 - 20:36:55 EST


On Thu, 9 Jan 2020 10:38:46 -0300
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Em Thu, Jan 09, 2020 at 06:33:56PM +0900, Masami Hiramatsu escreveu:
> > Hi,
> >
> > On Thu, 9 Jan 2020 11:10:56 +0900
> > Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote:
> >
> > > Hmm, this seems that the event->hw.tp_list is not initialized when removing
> > > from the list in uprobe_perf_close().
> >
> > Oops, that's wrong. Of course my patch can ease (avoid kernel panic) the
> > issue, but not fixing the root cause.
> > The root cause is that the uprobe event tries to open multiple probes with
> > one perf_event. So the perf_event is reused on different probes.
> >
> > In the reported case, if we remove the multiple probe event before perf-stat,
> > no problem happens.
> >
> > I'll try to fix it.
>
> Ok!
>
> For reference, I rebooted it with a fedora kernel, 5.3ish and it seems
> to work:

Yes, since it was my commit 60d53e2c3b75 ("tracing/probe: Split trace_event
related data from trace_probe") broke list operation...
I'll send a fix soon.

Thank you,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>