Re: [BUG] perf: buildid not managed properly when cmd path isrelative

From: Arnaldo Carvalho de Melo
Date: Sat May 29 2010 - 18:58:32 EST


Em Thu, May 27, 2010 at 03:46:16PM +0200, Stephane Eranian escreveu:
> I ran into another problem while running more tests with
> perf record, perf buildid-list.
>
> I do the following:
>
> $ perf record foo/noploop 5
> $ perf buildid-list
> 54b1e7cc3cf52e0db255aab44ce7538eb62655b8 [kernel.kallsyms]
> 875ae61623e89f408b425ca0486a9ec99e3ac73e
> /home/eranian/perfmon/official/tip/build/tools/perf/foo/noploop
>
> I know I have samples in noploop:
> $ perf report -D
> ...
> 0x10a0 [0x20]: PERF_RECORD_SAMPLE(IP, 2): 14721/14721: 0x4006d6 period: 2351576
> ... thread: noploop:14721
> ...... dso: ./foo/noploop
>
> But if I ask with buildid-list (like per-archive is doing) then I get:
>
> $ perf buildid-list --with-hits
> 54b1e7cc3cf52e0db255aab44ce7538eb62655b8 [kernel.kallsyms]
> 0000000000000000000000000000000000000000 ./foo/noploop
>
> The builid is bogus for noploop and it is relative path not full anymore.
>
> I instrumented __dsos__fprintf_buildid() and I get:
> hit=0 name=/home/eranian/perfmon/official/tip/build/tools/perf/foo/noploop
> hit=1 name=./foo/noploop
> 0000000000000000000000000000000000000000 ./foo/noploop
>
> So it looks like when cmd is relative there are two entries but the one
> that counts the hits is the one with relative path. But is does not have
> the buildid, the full path entry does.
>
> This is an issue because perf-archive only packages the
> content of .debug with hits.
>
> The problem does not exists when cmd are found from PATH.

I reproduced the problem, and yeah, annoying, will work on it, thanks
for the report.

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/