Re: [BUGFIX PATCH 1/6] perf/probe: Fix wrong address verification

From: Masami Hiramatsu
Date: Fri Oct 25 2019 - 08:36:39 EST


Hi,

On Fri, 25 Oct 2019 09:14:48 -0300
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Em Fri, Oct 25, 2019 at 05:46:25PM +0900, Masami Hiramatsu escreveu:
> > Since there are some DIE which has only ranges instead of the
> > combination of entrypc/highpc, address verification must use
> > dwarf_haspc() instead of dwarf_entrypc/dwarf_highpc.
> >
> > Also, the ranges only DIE will have a partial code in different
> > section (e.g. unlikely code will be in text.unlikely as "FUNC.cold"
> > symbol). In that case, we can not use dwarf_entrypc() or
> > die_entrypc(), because the offset from original DIE can be
> > a minus value.
> >
> > Instead, this simply gets the symbol and offset from symtab.
> >
> > Without this patch;
> > # tools/perf/perf probe -D clear_tasks_mm_cpumask:1
> > Failed to get entry address of clear_tasks_mm_cpumask
> > Error: Failed to add events.
> >
> > And with this patch
> > # tools/perf/perf probe -D clear_tasks_mm_cpumask:1
> > p:probe/clear_tasks_mm_cpumask clear_tasks_mm_cpumask+0
> > p:probe/clear_tasks_mm_cpumask_1 clear_tasks_mm_cpumask+5
> > p:probe/clear_tasks_mm_cpumask_2 clear_tasks_mm_cpumask+8
> > p:probe/clear_tasks_mm_cpumask_3 clear_tasks_mm_cpumask+16
> > p:probe/clear_tasks_mm_cpumask_4 clear_tasks_mm_cpumask+82
>
> Ok, so this just asks for the definition, but doesn't try to actually
> _use_ it, which I did and it fails:
>
> [root@quaco tracebuffer]# perf probe -D clear_tasks_mm_cpumask:1
> p:probe/clear_tasks_mm_cpumask _text+919968
> p:probe/clear_tasks_mm_cpumask_1 _text+919973
> p:probe/clear_tasks_mm_cpumask_2 _text+919976
> [root@quaco tracebuffer]#
> [root@quaco tracebuffer]# perf probe clear_tasks_mm_cpumask
> Probe point 'clear_tasks_mm_cpumask' not found.
> Error: Failed to add events.
> [root@quaco tracebuffer]#
>
> So I'll tentatively continue to apply the other patches in this series,
> maybe one of them will fix this.

Yes, it should be fixed by [2/6] :)

Actually, a probe point with offset line and no-offset are handled
a bit differently.

Thank you,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>