lkml.org 
[lkml]   [2010]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Floating point exception by perf record
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.

Thanks,
Hitoshi



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