From: Ingo Molnar <mingo@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Jiri Olsa <jolsa@redhat.com>, LKML <linux-kernel@vger.kernel.org>,
David Ahern <dsahern@gmail.com>, Kan Liang <kan.liang@intel.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Andi Kleen <andi@firstfloor.org>, Wang Nan <wangnan0@huawei.com>
Subject: Re: [PATCH 2/3] perf callchain: Stop resolving callchains after invalid address
Date: Fri, 27 Nov 2015 08:48:40 +0100 [thread overview]
Message-ID: <20151127074840.GA24277@gmail.com> (raw)
In-Reply-To: <20151126141204.GB18551@danjae.kornet>
* Namhyung Kim <namhyung@kernel.org> wrote:
> Hi Ingo,
>
> On Thu, Nov 26, 2015 at 08:43:35AM +0100, Ingo Molnar wrote:
> >
> > * 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?
>
> In case of fp unwind, I'm not sure we can determine whether it's
> normal end or not especially for optimized binaries. It seems kernel
> also can stop callchain anytime if it sees a broken frame.
>
> For dwarf unwind, I think it's also hard to tell since it can be
> stopped for various reasons like insufficient dump size or broken CFI,
But but. Doesn't your patch 'detect' an anomaly to begin with?
+ /*
+ * Callchain value under mmap_min_addr means it's broken
+ * or the end of callchain. Stop.
+ */
+ if (ip < mmap_min_addr) {
+ if (callchain_param.order == ORDER_CALLEE)
+ break;
all I'm asking for is to indicate it in some low-key visual fashion when we
encounter such a 'broken' call-chain.
I presume the 'old' way of ending the call-chain was that 'ip' was zero, right? We
should not print the indicator in that case.
Also, in the dwarf case I'd also see value in indicating if any of these events
occured:
> For dwarf unwind, I think it's also hard to tell since it can be stopped for
> various reasons like insufficient dump size or broken CFI,
even if we cannot catch all anomalies. Performance analysis must stand firm on a
hard rock of reliability and dependability, and we should always propagate
information about possible profiling data corruption/unreliability. That's why we
print the 'IO overload' messages during perf record for example.
Even if the problem is not caused by perf, but by external factors such as the
compiler/linker.
Thanks,
Ingo
next prev parent reply other threads:[~2015-11-27 7:48 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-26 7:08 [PATCH 1/3] perf top: Fix freeze on --call-graph flat/folded Namhyung Kim
2015-11-26 7:08 ` [PATCH 2/3] perf callchain: Stop resolving callchains after invalid address Namhyung Kim
2015-11-26 7:43 ` Ingo Molnar
2015-11-26 14:12 ` Namhyung Kim
2015-11-27 7:48 ` Ingo Molnar [this message]
2015-11-26 13:14 ` David Ahern
2015-11-26 15:00 ` Namhyung Kim
2015-11-26 15:48 ` David Ahern
2015-11-26 15:58 ` Jiri Olsa
2015-11-26 16:19 ` Arnaldo Carvalho de Melo
2015-12-02 5:20 ` Namhyung Kim
2015-11-26 7:08 ` [PATCH 3/3] perf callchain: Honor hide_unresolved Namhyung Kim
2015-11-26 8:46 ` Jiri Olsa
2015-11-26 16:20 ` Arnaldo Carvalho de Melo
2015-11-27 7:43 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-11-26 8:38 ` [PATCH 1/3] perf top: Fix freeze on --call-graph flat/folded Jiri Olsa
2015-11-26 13:52 ` Namhyung Kim
2015-11-26 14:00 ` Jiri Olsa
2015-11-26 15:10 ` Namhyung Kim
2015-11-26 15:22 ` Jiri Olsa
2015-11-26 16:32 ` Arnaldo Carvalho de Melo
2015-11-27 7:43 ` [tip:perf/core] " tip-bot for Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151127074840.GA24277@gmail.com \
--to=mingo@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=kan.liang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=namhyung@kernel.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox