Re: [PATCH] perf, tools, report: Add support for srcfile sort key

Namhyung Kim
2015-08-11T02:44:28Z

On Mon, Aug 10, 2015 at 05:37:40PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Mon, Aug 10, 2015 at 03:32:47PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Mon, Aug 10, 2015 at 01:12:41PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > (gdb) fr 2
> > > #2 0x00000000004bb812 in sort__srcline_cmp (left=0x1bfa090, right=0x7fffffffc0a0) at util/sort.c:306
> > > 306 hists__new_col_len(right->hists, HISTC_SRCLINE,
> > > (gdb) p right->hists
> > > $7 = (struct hists *) 0x0
> > > (gdb) p left->hists
> > > $8 = (struct hists *) 0x18d66e0
>
> > > Due to this both "-s srcline" and "-s srcfile" crashes here.
>
> > Ok, this one needs to be applied before yours and Andi's:
>
> > +++ b/tools/perf/util/hist.c
> > @@ -761,6 +761,7 @@ iter_add_next_cumulative_entry(struct hist_entry_iter *iter,
> > struct hist_entry **he_cache = iter->priv;
> > struct hist_entry *he;
> > struct hist_entry he_tmp = {
> > + .hists = evsel__hists(evsel),
> > .cpu = al->cpu,
> > ---------
>
> > Because you will use that stack synthesized he_tmp entry as a parameter
> > to the cmp() function, that will end up trying to access he_tmp->hists,
> > that was NULL, b00m.
>
> all this is moot, as we need to update that column length elsewhere,
> together with all the other fileds, please see:
>
> ://git.kernel.org/cgit/linux/kernel/git/acme/linux.git/commit/?h=perf/core&id=e8e6d37e73e6b950c891c780745460b87f4755b6

Looks good to me.

>
> And now, with it really updating the width, we get to another problem,
> in one case I got a line like:
>
> 0.00% JS_GetInstancePrivate(JSContext*, JSObject*, JSClass*, JS /usr/lib64/libmozjs-24.so 0x1a0bd1 d [.] JS_GetInstancePrivate(JSContext*, JSObject*, JSClass*, JS::Value*)

It seems like ':' character in the symbol name affects the result for some reason.

Thanks,
Namhyung

>
> Which is really strange, i.e. it mixed up demangled stuff with the
> srcfile, i.e. normal lines for:
>
> perf report -v -s srcfile,dso,symbol --stdio
>
> Look like:
>
> 1.94% malloc.c /usr/lib64/libc-2.20.so 0x80f91 d [.] _int_malloc
>
> Anyway, will continue this later, together with checking why it doesn't resolve
> many things, that one may be related, in some cases, to functions in assembly
> source files, for now it updates correctly the column width for "srcline" and
> "srcfile".
>
> - Arnaldo