[x264-devel] Bus error
Jason Garrett-Glaser
darkshikari at gmail.com
Thu Mar 5 23:08:06 CET 2009
On Thu, Mar 5, 2009 at 1:57 PM, Måns Rullgård <mans at mansr.com> wrote:
> Zubair Ali Khan <zkhan at d2tech.com> writes:
>
>> Brad wrote:
>>> On Thursday 05 March 2009 15:51:14 Zubair Ali Khan wrote:
>>>
>>>> Måns Rullgård wrote:
>>>> Zubair Ali Khan <zkhan at d2tech.com> writes:
>>>>
>>>
>>> Fix your e-mail client. Do not send HTMLized e-mail to the list.
>>>
>>>
>> 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?
>
> You might be passing avcodec_encode_video() a bad pointer for the
> output buffer. I suggest double-checking it.
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.
Dark Shikari
More information about the x264-devel
mailing list