Re: [PATCH] perf symbols: Don't try to find a vmlinux file when looking for kernel modules

From: Arnaldo Carvalho de Melo
Date: Mon Mar 02 2020 - 15:21:06 EST


Em Mon, Mar 02, 2020 at 09:02:49PM +0100, Jiri Olsa escreveu:
> On Mon, Mar 02, 2020 at 04:10:07PM -0300, Arnaldo Carvalho de Melo wrote:
> > The dso->kernel value is now set to everything that is in
> > machine->kmaps, but that was being used to decide if vmlinux lookup is
> > needed, which ended up making that lookup be made for kernel modules,
> > that now have dso->kernel set, leading to these kinds of warnings when
> > running on a machine with compressed kernel modules, like fedora:31:
> >
> > [root@five ~]# perf record -F 10000 -a sleep 2
> > [ perf record: Woken up 1 times to write data ]
> > lzma: fopen failed on vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /usr/lib/debug/boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /lib/modules/5.5.5-200.fc31.x86_64/build/vmlinux: 'No such file or directory'
> > lzma: fopen failed on vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /usr/lib/debug/boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /lib/modules/5.5.5-200.fc31.x86_64/build/vmlinux: 'No such file or directory'
> > lzma: fopen failed on vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /usr/lib/debug/boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /lib/modules/5.5.5-200.fc31.x86_64/build/vmlinux: 'No such file or directory'
> > lzma: fopen failed on vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /usr/lib/debug/boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /lib/modules/5.5.5-200.fc31.x86_64/build/vmlinux: 'No such file or directory'
> > lzma: fopen failed on vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux: 'No such file or directory'
> > lzma: fopen failed on /boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /usr/lib/debug/boot/vmlinux-5.5.5-200.fc31.x86_64: 'No such file or directory'
> > lzma: fopen failed on /lib/modules/5.5.5-200.fc31.x86_64/build/vmlinux: 'No such file or directory'
> > [ perf record: Captured and wrote 1.024 MB perf.data (1366 samples) ]
> > [root@five ~]#
> >
> > This happens when collecting the buildid, when we find samples for
> > kernel modules, fix it by checking if the looked up DSO is a kernel
> > module by other means.
> >
> > Fixes: 02213cec64bb ("perf maps: Mark module DSOs with kernel type")
>
> ok, I couldn't see that because kcore took over the modules,
> for some reason you don't have it enabled on your system?

Humm, maybe you don't have a reachable vmlinux so it ends up using
/proc/kcore? I even think we should make the default... :-)

> because I had to disable it manualy in the code.. I think
> we should add some --no-kcore option for record
>
> the fix is working for me:
>
> Tested/Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

Thanks, for checking!

> thanks,
> jirka
>

--

- Arnaldo