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.