Re: [PATCH 2/3] perf callchain: Stop resolving callchains after invalid address

Ingo Molnar
2015-11-26T07:43:46Z

* Namhyung Kim <namhyung@kernel.org> wrote:

> Unwinding optimized binaries using frame pointer gives garbage. Check
> callchain address and stop if it's under vm.mmap_min_addr sysctl value.
>
> Before:
> $ perf report --stdio --no-children -g callee
> ...
>
> 1.37% perf [kernel.vmlinux] [k] smp_call_function_single
> |
> ---smp_call_function_single
> _perf_event_enable
> perf_event_for_each_child
> perf_ioctl
> do_vfs_ioctl
> sys_ioctl
> entry_SYSCALL_64_fastpath
> __GI___ioctl
> 0
> 0
> 0x1c5aa70
> 0x1c5b910
> 0x1c5aa70
> 0x1c5b910
> 0x1c5aa70
> 0x1c5b910
> 0x1c5aa70
> 0x1c5b910
> 0x1c5aa70
> 0x1c5b910
> ...
>
> After:
> $ perf report --stdio --no-children -g callee
> ...
>
> 1.37% perf [kernel.vmlinux] [k] smp_call_function_single
> |
> ---smp_call_function_single
> _perf_event_enable
> perf_event_for_each_child
> perf_ioctl
> do_vfs_ioctl
> sys_ioctl
> entry_SYSCALL_64_fastpath
> __GI___ioctl

In addition to that, would it make sense to terminate the callchain with an
indicator that we found something anomalous? Such an extra line:

...

would not be intrusive, but would tell the informed reader that it's not a normal
ending of the call chain.

This assumes that we can tell apart 'normal end of call chain' from 'seems to end
with garbage poiner' cases - can do we that?

Thanks,

Ingo