[x264-devel] Bus error

Zubair Ali Khan zkhan at d2tech.com
Thu Mar 5 23:21:36 CET 2009


my comments inline:
Jason Garrett-Glaser wrote:
>
>>> Hmmm, its thunderbird and on format auto detect. Anyways, I have made
>>> it stick to text.
>>> Here is the gdb output again.
>>> No symbol table is loaded.  Use the "file" command.
>>> (gdb) file /home/zkhan/workspace/vid/exe
>>> Reading symbols from /home/zkhan/workspace/vid/exe...done.
>>> (gdb) target remote 172.16.100.21:10000
>>> Remote debugging using 172.16.100.21:10000
>>> 0x00008120 in _start ()
>>> (gdb) b main
>>> During symbol reading, DW_AT_name missing from DW_TAG_base_type.
>>> During symbol reading, unsupported tag: 'DW_TAG_const_type'.
>>> Breakpoint 1 at 0x8b14: file videncdec.c, line 35.
>>> (gdb) c
>>> Continuing.
>>>
>>> Breakpoint 1, main () at videncdec.c:35
>>> 35        avcodec_init();
>>> (gdb) c
>>> Continuing.
>>>
>>> Program received signal SIGBUS, Bus error.
>>> 0x003f6270 in x264_sps_write (s=
>>> During symbol reading, incomplete CFI data; unspecified registers
>>> (e.g., r0) at 0x3f575c.
>>> 0x8abb88, sps=0x8abbc8) at ./common/bs.h:123
>>> 123                *(uint32_t*)s->p = endian_fix( s->cur_bits );
>>> (gdb) info registers
>>> r0             0x0    0
>>> r1             0xab0cc042    2869739586
>>> r2             0xc000    49152
>>> r3             0xc0000    786432
>>> r4             0x8abb88    9091976
>>> r5             0x3    3
>>> r6             0x8abbc8    9092040
>>> r7             0x3    3
>>> r8             0x5    5
>>> r9             0x4026b008    1076277256
>>> r10            0x0    0
>>> r11            0xbea439dc    3198433756
>>> r12            0x401251ff    1074942463
>>> sp             0xbea43870    0xbea43870
>>> lr             0x3    3
>>> pc             0x3f6270    0x3f6270 <x264_sps_write+2840>
>>> fps            0x0    0
>>> cpsr           0x60000010    1610612752
>>> (gdb) bt
>>> #0  0x003f6270 in x264_sps_write (s=0x8abb88, sps=0x8abbc8)
>>>    at ./common/bs.h:123
>>> During symbol reading, DW_AT_type missing from DW_TAG_subrange_type.
>>> #1  0x003a8504 in x264_encoder_encode (h=0x8ab6c0, pp_nal=0x8ab6c0,
>>>    pi_nal=0x10, pic_in=<value optimized out>, pic_out=0xbea439f8)
>>>    at encoder/encoder.c:1579
>>> #2  0x00283574 in X264_frame (ctx=<value optimized out>, buf=0x4026b008 "",
>>>    bufsize=202752, data=<value optimized out>) at libavcodec/libx264.c:91
>>> #3  0x0000d8f0 in avcodec_encode_video (avctx=0x8aafc0,
>>>    buf=0xab0cc042 <Address 0xab0cc042 out of bounds>, buf_size=202752,
>>>    pict=0x8dfba0) at libavcodec/utils.c:495
>>> #4  0x0000955c in H264_encode (obj_ptr=0xbea43a20, out_ptr=0x4026b008,
>>>    in_ptr=0x40245008, len=202752) at h264.c:129
>>> #5  0x00008c54 in main () at videncdec.c:82
>>>       
>> You are apparently using libavcodec from your own application.  Does
>> the ffmpeg executable work?
>>
>>     
>>> (gdb) disas $pc-64 $pc+64
>>> Dump of assembler code from 0x3f6230 to 0x3f62b0:
>>> 0x003f6230 <x264_sps_write+2776>:    rsb    r3, r0, r1
>>> 0x003f6234 <x264_sps_write+2780>:    str    r3, [r4, #16]
>>> 0x003f6238 <x264_sps_write+2784>:    b    0x3f6668 <x264_sps_write+3856>
>>> 0x003f623c <x264_sps_write+2788>:    rsb    r0, r1, r0
>>> 0x003f6240 <x264_sps_write+2792>:    ldr    r2, [r4, #12]
>>> 0x003f6244 <x264_sps_write+2796>:    lsl    r2, r2, r1
>>> 0x003f6248 <x264_sps_write+2800>:    orr    r2, r2, r7, lsr r0
>>> 0x003f624c <x264_sps_write+2804>:    ldr    r12, [r4, #4]
>>> 0x003f6250 <x264_sps_write+2808>:    lsl    r1, r2, #24
>>> 0x003f6254 <x264_sps_write+2812>:    add    r1, r1, r2, lsr #24
>>> 0x003f6258 <x264_sps_write+2816>:    lsl    r3, r2, #8
>>> 0x003f625c <x264_sps_write+2820>:    and    r3, r3, #16711680    ; 0xff0000
>>> 0x003f6260 <x264_sps_write+2824>:    add    r1, r1, r3
>>> 0x003f6264 <x264_sps_write+2828>:    lsr    r2, r2, #8
>>> 0x003f6268 <x264_sps_write+2832>:    and    r2, r2, #65280    ; 0xff00
>>> 0x003f626c <x264_sps_write+2836>:    add    r1, r1, r2
>>> 0x003f6270 <x264_sps_write+2840>:    str    r1, [r12]
>>>       
>> This is trying to write to an unaligned address, which the CPU does
>> support unless disabled.  What does /proc/cpu/alignment contain?
>>
>>     
cat /proc/cpu/alignment
User:           5
System:         0
Skipped:        0
Half:           0
Word:           0
DWord:          0
Multi:          0
User faults:    4 (signal)

>> You might be passing avcodec_encode_video() a bad pointer for the
>> output buffer.  I suggest double-checking it.
>>     
>
>   
It could be, but I ran the exact same source compiled for X86 on PC and 
had no issue. And wouldn't bad pointer -most likely- generate 
segmentation fault and not bus error? I will double check anyways and 
let you know if I find a bad pointer.
> x264 has a known bug with misaligned reads/writes in some cases with
> its bitstream writer.  There is a patch a month or two back on the
> mailing list; I would apply it, but I will not do so unless someone
> can confirm that it actually solves the problem.
>
>   
Has someone applied and found it worked? Thanks
> Dark Shikari
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> http://mailman.videolan.org/listinfo/x264-devel
>
>   



More information about the x264-devel mailing list