Peter Kjellstrom wrote:
On Thursday 12 August 2010, Hywel Richards wrote:
Hi all,
Is anyone using oprofile?
I'm getting segfaults from opreport at the moment, and I'm not sure if it is opreport, or just me.
I've tried the steps you outline below and it works for me (updated C5.5 as of 10m ago). My only guess is that your binary is b0rked. What happens if you do "opreport -l" instead of "opreport -l /tmp/myprog"? Was myprog compiled with "-g"?
And just to be sure, could you provide "uname -a" and "rpm -q oprofile".
/Peter
"opreport -l" gives:
warning: /no-vmlinux could not be found. warning: [vdso] (tgid:11369 range:0xdc9000-0xdca000) could not be found. warning: [vdso] (tgid:2453 range:0x154000-0x155000) could not be found. warning: [vdso] (tgid:24792 range:0x8e6000-0x8e7000) could not be found. warning: [vdso] (tgid:24797 range:0xd4a000-0xd4b000) could not be found. warning: [vdso] (tgid:3211 range:0x660000-0x661000) could not be found. warning: [vdso] (tgid:3426 range:0xed7000-0xed8000) could not be found. warning: [vdso] (tgid:3429 range:0x798000-0x799000) could not be found. warning: [vdso] (tgid:3549 range:0x3a8000-0x3a9000) could not be found. warning: [vdso] (tgid:3551 range:0x86b000-0x86c000) could not be found. warning: [vdso] (tgid:3575 range:0x90a000-0x90b000) could not be found. warning: [vdso] (tgid:3595 range:0xd9d000-0xd9e000) could not be found. warning: [vdso] (tgid:3641 range:0xfed000-0xfee000) could not be found. warning: [vdso] (tgid:3672 range:0xd1e000-0xd1f000) could not be found. warning: [vdso] (tgid:3673 range:0x133000-0x134000) could not be found. warning: [vdso] (tgid:3684 range:0x5c2000-0x5c3000) could not be found. warning: [vdso] (tgid:3693 range:0x189000-0x18a000) could not be found. warning: [vdso] (tgid:3698 range:0x903000-0x904000) could not be found. warning: [vdso] (tgid:3702 range:0x139000-0x13a000) could not be found. warning: [vdso] (tgid:3709 range:0xeb1000-0xeb2000) could not be found. warning: [vdso] (tgid:3756 range:0xf03000-0xf04000) could not be found. warning: [vdso] (tgid:3788 range:0xb7f49000-0xb7f4a000) could not be found. warning: [vdso] (tgid:3800 range:0x7e4000-0x7e5000) could not be found. warning: [vdso] (tgid:3836 range:0x662000-0x663000) could not be found. warning: [vdso] (tgid:3899 range:0xd2e000-0xd2f000) could not be found. warning: [vdso] (tgid:3902 range:0x33c000-0x33d000) could not be found. warning: [vdso] (tgid:5178 range:0xb7f50000-0xb7f51000) could not be found. warning: [vdso] (tgid:6643 range:0xfaa000-0xfab000) could not be found. CPU: Core Solo / Duo, speed 800 MHz (estimated) Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 100000 bfd_get_section_contents:get_debug:: Bad value
myprog was not compiled with -g, but that shouldn't be a requirement, right? Anyway, I recompiled my program with -g and I still get a segfault from "opreport -l". If I skip the "-l", it at least doesn't segfault, but then not so interesting information:
opreport /tmp/myprog2 CPU: Core Solo / Duo, speed 1867 MHz (estimated) Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 100000 CPU_CLK_UNHALT...| samples| %| ------------------ 25950 100.000 myprog2
Here's what I get when I do it on, say, gcc (no segfault this time, but perhaps it gives some indication of what is going wrong?):
opreport /usr/bin/g++ -l warning: [vdso] (tgid:25547 range:0xc49000-0xc4a000) could not be found. warning: [vdso] (tgid:25550 range:0x749000-0x74a000) could not be found. warning: [vdso] (tgid:25565 range:0xefc000-0xefd000) could not be found. CPU: Core Solo / Duo, speed 1867 MHz (estimated) Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 100000 bfd_get_section_contents:get_debug:: Bad value
"uname -a" gives:
Linux myhost 2.6.18-194.11.1.el5 #1 SMP Tue Aug 10 19:09:06 EDT 2010 i686 i686 i386 GNU/Linux
"rpm -q oprofile" gives:
oprofile-0.9.4-15.el5
I also did an "rpm -V oprofile" - no problems.
For the moment I'm working around this by compiling my program into a shared library, and using LD_PROFILE and sprof, which is working well.
Hywel.