Package: babeltrace
Version: 1.2.2-2
Severity: wishlist

I've been looking at the sparc issue and this is just a tracker bug.
One patch that helps passing half the testsuite is cae67efbd9 ("Fix:
Align buffers from objstack_alloc on sizeof(void *)") [0].
I would suggest to use an alignment of 8 even on 32bit architectures.
The 4 additional bytes shouldn't matter and the Sparc FPU provides
double support which have a size of 8 bytes and so probably require an
aligment of 8 even on 32bit (the test suite didn't complain here).
Jérémie?

And the second bug I stumbled on is in test_ctf_writer:
|…
|ok 75 - Flush trace stream with one event
|ok 76 - Add a new event class to a stream class after writing an event
|ok 77 - Append 100 000 events to a stream
|
|Program received signal SIGSEGV, Segmentation fault.
|0xf7f6f778 in ctf_integer_write (ppos=0x70022328, definition=<optimized out>) 
at integer.c:325
|325                             
bt_bitfield_write_be(mmap_align_addr(pos->base_mma) +
|(gdb) bt
|#0  0xf7f6f778 in ctf_integer_write (ppos=0x70022328, definition=<optimized 
out>) at integer.c:325
|#1  0xf7f88014 in bt_ctf_field_integer_serialize (field=0x700cd928, 
pos=0x70022328) at event-fields.c:1065
|#2  0xf7f88c88 in bt_ctf_field_serialize (field=0x700cd928, pos=0x70022328) at 
event-fields.c:660
|#3  0xf7f88f10 in bt_ctf_field_structure_serialize (field=0x700cd8c8, 
pos=0x70022328) at event-fields.c:1143
|#4  0xf7f88c88 in bt_ctf_field_serialize (field=0x700cd8c8, pos=0x70022328) at 
event-fields.c:660
|#5  0xf7f857bc in bt_ctf_stream_flush (stream=0x70022310) at stream.c:458
|#6  0x7000577c in packet_resize_test (stream_class=<optimized out>, 
stream=0x70022310, clock=0x70022108) at test_ctf_writer.c:698
|#7  0x70002750 in main (argc=<optimized out>, argv=0xffffd6f4) at 
test_ctf_writer.c:818
|
|=> 0xf7f6f778 <+600>:   ldub  [ %l3 + %l1 ], %g4
|
|l1             0x10002  65538
|l3             0xf7bb4000       -138723328

and _bt_bitfield_write_le() had __ptr = 0xf7bb4000 and this_unit = 65538

|(gdb) print *((struct ctf_stream_pos *)ppos)->base_mma
|$3 = {page_aligned_addr = 0xf7bb4000, page_aligned_length = 131072, addr = 
0xf7bb4000, length = 131072}

So it looks like it tried to load a byte from 0xf7bb4000 + 0x10002 and
this segfaulted. The mapping should be 131072 bytes in size it should
fit. This is confirmed by proc, too
|f7bb0000-f7bd0000 -w-s 00010000 fe:02 262357 
/tmp/ctfwriter_5uYQD4/test_stream_0
|Size:                128 kB

So everything looks legal…

[0] 
http://git.efficios.com/?p=babeltrace.git;a=commitdiff;h=cae67efbd9ddf2cee6bbefec076dc8933ababc43

Sebastian


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to