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

From: Wangnan (F)
Date: Thu Nov 19 2015 - 01:45:42 EST




On 2015/11/19 14:37, Ingo Molnar wrote:
* 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.

Just for curiosity:

how the interrupted process continue to execute, when the PC
saved in pt_regs still pointed to 'callq' but SP and stack has
already changes? Do we fix it in kernel, or by hardware?

Thank you.

--
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/