From: Namhyung Kim <namhyung@kernel.org>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
LKML <linux-kernel@vger.kernel.org>,
David Ahern <dsahern@gmail.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Subject: Re: [RFC/PATCH] perf tools: Introduce perf_thread for backtrace
Date: Tue, 24 Nov 2015 16:36:03 +0900 [thread overview]
Message-ID: <20151124073603.GE2636@sejong> (raw)
In-Reply-To: <20151120092948.GB897@krava.brq.redhat.com>
Hi Jiri,
On Fri, Nov 20, 2015 at 10:29:48AM +0100, Jiri Olsa wrote:
> On Fri, Nov 20, 2015 at 03:03:03PM +0900, Namhyung Kim wrote:
> > Backtrace is a crucial info for debugging. And upcoming refcnt
> > tracking facility also wants to use it.
> >
> > So instead of relying on glibc's backtrace_symbols[_fd] which misses
> > some (static) functions , use our own symbol searching mechanism. To
> > do that, add perf_thread global variable to keep its maps and symbols.
> >
> > The backtrace output from TUI is changed like below. (I made a key
> > action to generate a segfault for testing):
> >
> > Before:
> > perf: Segmentation fault
> > -------- backtrace --------
> > perf[0x544a8b]
> > /usr/lib/libc.so.6(+0x33680)[0x7fc46420b680]
> > perf[0x54041b]
> > perf(perf_evlist__tui_browse_hists+0x91)[0x5432e1]
> > perf(cmd_report+0x1d20)[0x43cb10]
> > perf[0x487073]
> > perf(main+0x62f)[0x42cb1f]
> > /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fc4641f8610]
> > perf(_start+0x29)[0x42cc39]
> > [0x0]
> >
> > After:
> > perf: Segmentation fault
> > -------- backtrace --------
> > perf_evsel__hists_browse(+0x43b) in perf [0x54066b]
> > perf_evlist__tui_browse_hists(+0x91) in perf [0x543531]
> > cmd_report(+0x1d20) in perf [0x43cb50]
> > run_builtin(+0x53) in perf [0x4870b3]
> > main(+0x634) in perf [0x42cb54]
> > __libc_start_main(+0xf0) in libc-2.22.so [0x7fea3577c610]
> > _start(+0x29) in perf [0x42cc79]
> > [0x0]
>
> nice idea!
>
> SNIP
>
> > +
> > +void create_perf_thread(void)
> > +{
> > + struct perf_tool tool = {
> > + .comm = perf_event__process_comm,
> > + .mmap = perf_event__process_mmap,
> > + .mmap2 = perf_event__process_mmap2,
> > + };
> > + struct thread_map *tm;
> > + struct machine *machine;
> > + int pid = getpid();
> > +
> > + machine = machine__new_host();
> > + if (machine == NULL)
> > + return;
> > +
> > + tm = thread_map__new_dummy();
> > + if (tm == NULL) {
> > + machine__delete(machine);
> > + return;
> > + }
>
> I think we could treat errors the usual way in here..
> if fail to alloc this early, something is terribly wrong anyway
OK, I'll change it to return error code and let perf fail with it.
Thanks,
Namhyung
next prev parent reply other threads:[~2015-11-24 7:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-20 6:03 [RFC/PATCH] perf tools: Introduce perf_thread for backtrace Namhyung Kim
2015-11-20 9:05 ` 平松雅巳 / HIRAMATU,MASAMI
2015-11-20 12:10 ` Arnaldo Carvalho de Melo
2015-11-24 7:24 ` Namhyung Kim
2015-11-20 9:29 ` Jiri Olsa
2015-11-24 7:36 ` Namhyung Kim [this message]
2015-11-23 21:39 ` Arnaldo Carvalho de Melo
2015-11-24 7:34 ` 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=20151124073603.GE2636@sejong \
--to=namhyung@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=dsahern@gmail.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@kernel.org \
/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