Re: [PATCH] perf report: don't crash on invalid maps in `-g srcline` mode

From: Namhyung Kim
Date: Fri May 12 2017 - 08:19:22 EST


On Fri, May 12, 2017 at 12:23:06PM +0200, Milian Wolff wrote:
> On Mittwoch, 10. Mai 2017 08:04:23 CEST Namhyung Kim wrote:
> > On Tue, May 09, 2017 at 10:50:46PM +0200, Milian Wolff wrote:
>
> <snip>
>
> > > diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
> > > index 9ab68682c6d0..295f0846fd84 100644
> > > --- a/tools/perf/util/callchain.c
> > > +++ b/tools/perf/util/callchain.c
> > > @@ -642,13 +642,22 @@ static enum match_result match_chain_strings(const
> > > char *left,>
> > > static enum match_result match_chain_srcline(struct callchain_cursor_node
> > > *node,>
> > > struct callchain_list *cnode)
> > >
> > > {
> > >
> > > - char *left = get_srcline(cnode->ms.map->dso,
> > > - map__rip_2objdump(cnode->ms.map, cnode->ip),
> > > - cnode->ms.sym, true, false);
> > > - char *right = get_srcline(node->map->dso,
> > > - map__rip_2objdump(node->map, node->ip),
> > > - node->sym, true, false);
> > > - enum match_result ret = match_chain_strings(left, right);
> > > + char *left = NULL;
> > > + char *right = NULL;
> > > + enum match_result ret = MATCH_ERROR;
> > > +
> > > + if (!node->map || !cnode->ms.map)
> > > + return ret;
> >
> > This makes it fall back to function/address matching below if one of
> > srcline is not available. But it'll just show many "??:0" entries
> > IMHO. Maybe we can use same logic in util/sort.c:cmp_null instead..
>
> Yes, that could be done but I think it's not directly related to the patch/fix
> at hand. Would it be OK if I change this behavior in a separate patch?

I'm OK with that.

Thanks,
Namhyung