Re: [PATCH 08/14] perf report: Cache cumulative callchains

Rodrigo Campos
2013-11-01T14:25:18Z

On Fri, Nov 01, 2013 at 04:07:22PM +0900, Namhyung Kim wrote:
> Hi Rodrigo,
>
> On Thu, 31 Oct 2013 11:13:34 +0000, Rodrigo Campos wrote:
> > On Thu, Oct 31, 2013 at 03:56:10PM +0900, Namhyung Kim wrote:
> >> @@ -538,6 +586,7 @@ iter_finish_cumulative_entry(struct add_entry_iter *iter,
> >> evsel->hists.stats.total_period += sample->period;
> >> hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
> >>
> >> + free(iter->priv);
> >
> > And here I'm seeing a double free when trying the patchset with other examples.
> > I added a printf to the "if (node == NULL)" case and I'm hitting it. So it seems
> > to me that, when reusing the entry, every user is freeing it and then the double
> > free.
> >
> > This is my first time looking at perf code, so I might be missing LOT of things,
> > sorry in advance :)
>
> Don't say sorry! You're very helpful and found a real bug!

:-)

> > I'm not really sure which is the fix for this. Also just in case I tried
> > assigning "iter->priv = NULL" after it's free'd and it """fixes""" it.
>
> I think the right fix is assigning "iter->priv = NULL" as you said. But
> I changed this patch a bit for v3 so need to check it again.

Ohh, great. I'll wait for v3 to play more with this :-)

Thanks a lot,
Rodrigo