lkml.org 
[lkml]   [2010]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Floating point exception by perf record
On 04/08/10 15:46, Hitoshi Mitake wrote:
> On 04/07/10 19:38, Arnaldo Carvalho de Melo wrote:
> > Em Wed, Apr 07, 2010 at 05:32:24PM +0900, Hitoshi Mitake escreveu:
> >> On 04/06/10 03:31, Arnaldo Carvalho de Melo wrote:
> >>> Em Sun, Apr 04, 2010 at 05:10:57PM +0900, Hitoshi Mitake escreveu:
> >>> [root@doppio ~]# perf lock report | head -3
> >>> Warning: Error: expected 'data' but read 'overwrite'
> >>> ID Name acquired contended
> >> total wait (ns) max wait (ns) min wait (ns)
> >>>
> >>> 0xffff8800029d4b28&q->lock 0 0 0
> >> 0 0
> >>> [root@doppio ~]#
> >>>
> >>> My system details:
> >>>
> >>> [root@doppio ~]# uname -a
> >>> Linux doppio.ghostprotocols.net 2.6.34-rc3-tip+ #1 SMP Mon Apr 5
> >> 13:49:42 BRT 2010 x86_64 x86_64 x86_64 GNU/Linux
> >>> [root@doppio ~]# rpm -q newt
> >>> newt-0.52.10-4.fc11.x86_64
> >>> [root@doppio ~]#
> >>>
> >>> No segfaults here :-\
> >>>
> >>> - Arnaldo
> >>>
> >>
> >> I tested perf lock trace and got a similar error (but different).
> >> % sudo ./perf lock trace
> >> Fatal: reading input file (size expected=3 received=0)
> >> It seems that perf.data is broken :( I'll search the cause.
> >
> > Take a look at:
> >
> > http://git.kernel.org/?p=linux/kernel/git/acme/linux-2.6.git;a=summary
> >
> > "perf" branch, there is at least one fix there, the "overwrite" one.
> >
>
> Thanks for your notify!
> I applied changes on your branch, but my problem was not solved...
>
> I found that the member "offset" of struct perf_file_header is broken.
> I made this easy change,
>
> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> index 6c9aa16..dbea087 100644
> --- a/tools/perf/util/header.c
> +++ b/tools/perf/util/header.c
> @@ -571,6 +571,7 @@ int perf_header__process_sections(struct perf_header
> *self, int fd,
> if (perf_header__getbuffer64(self, fd, feat_sec, sec_size))
> goto out_free;
>
> + printf("feat_sec->offset:%llu\n", feat_sec->offset);
> err = 0;
> while (idx < nr_sections && feat < HEADER_LAST_FEATURE) {
> if (perf_header__has_feat(self, feat)) {
>
> And the result is this:
>
> % sudo ./perf lock report
> Fatal: reading input file (size expected=3 received=0)
> feat_sec->offset:18014402804449281 # <- Wow! :(
>
> It seems that header of perf.data is broken...
> But it may be a cause of this problem, I'll try to fix it.
>

I tried to build perf without newt,
then perf lock record could work without floating point exception
I mentioned earlier.

And perf lock report could parsed the perf.data previous perf lock
record produced.

The cause of breaking header of perf.data is that
handler registerd by atexit() was not called.

Hmm...


\
 
 \ /
  Last update: 2010-04-08 09:31    [from the cache]
©2003-2011 Jasper Spaans