Re: [BUG REPORT] perf tools: x86_64: Broken calllchain when sampling taken at 'callq' instruction

From: Ingo Molnar
Date: Thu Nov 19 2015 - 01:37:33 EST



* Wangnan (F) <wangnan0@xxxxxxxxxx> wrote:

> >perf cmdline is
> >
> ># ./pref record -g -F 9 --call-graph dwarf ./test_dwarf_unwind
> >
> >Use default events, precise_ip == 2 so uses PEBS.
> >
>
> Testetd 'cycles', 'cycles:p' and 'cycles:pp'. Only 'cycles:pp' captures
> sample at callq. So maybe a PEBS problem?

Well, that's how our PEBS sampling works: we roll back the instruction pointer to
point at the instruction generating the sample. The state itself is
post-instruction.

So dwarf unwind has to take this into account. Should the kernel pass in the
original (uncorrected) RIP as well, perhaps?

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/