** Description changed: + Impact: + + Under some condition, 'perf report' is unable to show the assembly code + of a kernel function (perf report -> select a kernel function -> + annotate). + + This is not an issue of the kernel itself or the perf tool, instead it's + your environment that is missing the objdump binary (and perf, + unfortunately, doesn't complain about it). + + Make sure binutils is not installed, or move away the objdump binary: + + # mv /usr/bin/objdump /usr/bin/objdump.foo + + Run a perf session and write down all events: + + # perf record -a -- sleep 10 + + # perf report + + selct a kernel function, press 'Annotate', a blank screen will appears + (instead of the assembly code). + + Now put the objdump binary back (or install binutils): + + # mv /usr/bin/objdump.foo /usr/bin/objdump + + and run again perf report: + + # perf report + + select a kernel function, annotate, the disassembly will show up. + + Fix: + + Make binutils a Depends in SRCPKGNAME-tools-PKGVER-ABINUM - see the + attached patch. + + How to test: + + Install a patched linux-tools-PKGVER-ABINUM.deb package: it will require + binutils. + + Regression: + + We are adding a new dependency on a package, so code wise there's no + regression potential - on the other hand, image creation, or development + environment will experience a slight increase in size (1.8MB on x86-64 + and 2.1M on arm64) if they didn't install binutils already. + + -- + Running zesty 4.10.0-13-generic kernel and running: - $ perf record + $ perf record followed by $ perf report results in output that can't be annotated (even when run as root). The following message appears: Couldn't annotate do_io_submit: No vmlinux file with build id 81ba79d482fa9e3ea58486de8f119b27fe6db55e was found in the path. Note that annotation using /proc/kcore requires CAP_SYS_RAWIO capability. Please use: perf buildid-cache -vu vmlinux Note this is being run as root and /proc/kcore is accessible with dd from the same shell: $ dd if=/proc/kcore bs=8 count=16 | hexdump 0000000 457f 464c 0102 0001 0000 0000 0000 0000 0000010 0004 00b7 0001 0000 0000 0000 0000 0000 0000020 0040 0000 0000 0000 0000 0000 0000 0000 0000030 0000 0000 0040 0038 0003 0000 0000 0000 0000040 0004 0000 0000 0000 00e8 0000 0000 0000 Additionally, installing the linux-image-4.10.0-13-generic-dbgsym actually hurts the situation because the symbol addresses in the dbgsym don't match the kernel addresses.
-- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1675949 Title: perf report can't annotate kernel and dbgsym package has wrong addresses Status in linux package in Ubuntu: Confirmed Bug description: Impact: Under some condition, 'perf report' is unable to show the assembly code of a kernel function (perf report -> select a kernel function -> annotate). This is not an issue of the kernel itself or the perf tool, instead it's your environment that is missing the objdump binary (and perf, unfortunately, doesn't complain about it). Make sure binutils is not installed, or move away the objdump binary: # mv /usr/bin/objdump /usr/bin/objdump.foo Run a perf session and write down all events: # perf record -a -- sleep 10 # perf report selct a kernel function, press 'Annotate', a blank screen will appears (instead of the assembly code). Now put the objdump binary back (or install binutils): # mv /usr/bin/objdump.foo /usr/bin/objdump and run again perf report: # perf report select a kernel function, annotate, the disassembly will show up. Fix: Make binutils a Depends in SRCPKGNAME-tools-PKGVER-ABINUM - see the attached patch. How to test: Install a patched linux-tools-PKGVER-ABINUM.deb package: it will require binutils. Regression: We are adding a new dependency on a package, so code wise there's no regression potential - on the other hand, image creation, or development environment will experience a slight increase in size (1.8MB on x86-64 and 2.1M on arm64) if they didn't install binutils already. -- Running zesty 4.10.0-13-generic kernel and running: $ perf record followed by $ perf report results in output that can't be annotated (even when run as root). The following message appears: Couldn't annotate do_io_submit: No vmlinux file with build id 81ba79d482fa9e3ea58486de8f119b27fe6db55e was found in the path. Note that annotation using /proc/kcore requires CAP_SYS_RAWIO capability. Please use: perf buildid-cache -vu vmlinux Note this is being run as root and /proc/kcore is accessible with dd from the same shell: $ dd if=/proc/kcore bs=8 count=16 | hexdump 0000000 457f 464c 0102 0001 0000 0000 0000 0000 0000010 0004 00b7 0001 0000 0000 0000 0000 0000 0000020 0040 0000 0000 0000 0000 0000 0000 0000 0000030 0000 0000 0040 0038 0003 0000 0000 0000 0000040 0004 0000 0000 0000 00e8 0000 0000 0000 Additionally, installing the linux-image-4.10.0-13-generic-dbgsym actually hurts the situation because the symbol addresses in the dbgsym don't match the kernel addresses. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1675949/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp