[x264-devel] Segmentation fault on PandaBoard
Jim Darby
uberscubajim at gmail.com
Fri Sep 14 01:13:35 CEST 2012
I have some more information on this problem. Something is broken with
the p4x4 partition with NEON.
I can set all the options for slower with the single exception of the
p4x4 partition. So, in other words the command line:
x264 -o test.264 --preset slow --rc-lookahead 60 --ref 8 --subme 9
--trellis 2 --partitions b8x8,i8x8,i4x4,p8x8 --input-res 720x576 test.yuv
works, but the command line:
x264 -o test.264 --preset slow --rc-lookahead 60 --ref 8 --subme 9
--trellis 2 --partitions p4x4,p8x8 --input-res 720x576 test.yuv
doesn't (note p8x8 is needed for p4x4, even though they're called 16x16
and 8x8 in the code).
Also the command line:
x264 -o test.264 --preset slow --partitions p4x4,p8x8 --input-res
720x576 test.yuv
appears to fail faster!
Any ideas guys?
Jim.
On 11/09/12 18:15, Jim Darby wrote:
> I thought I'd give x264 a blast on the PandaBoard ES (see
> http://pandaboard.org for details but essentially a dual-core
> Cortex-A9 with NEON). I compiled it with no special options (even
> though it sets the target machine to Cortex-A8).
>
> It encodes for a short while (5-10 seconds worth of video) and then
> gets a segmentation fault. Recompiling with --debug and unwinding the
> stack I can see that it blows up in mc_luma_neonbecause the weight
> structpassed in from x264_me_refine_qpel_rdvia the COST_MV_SATD( bmx,
> bmy, bsatd, 0 )macro called at encoder/me.c:1210 is an invalid pointer
> (interestingly 0x53366970 which spells T69p in ascii). This weight
> parameter comes from the m structure in x264_me_refine_qpel_rdwhich
> has the same corrupted value.
>
> The command line was: x264 -o test.264 --preset slower --input-res
> 720x576 test.yuv
>
> If I perform the same run with --no-asm it is amazingly slow but does
> not appear to crash. This would appear to indicate some problem with
> the NEON code. Running it single threaded doesn't help either.
>
> What does help is replacing the --preset slowerwith --preset slow.
> /Now that's interesting!/ That limits us quite a lot as to what is
> causing the problem.
>
> Any ideas on this one? More specifically, what can I do to help with
> debugging this? I've avoided sending 126MB core files or detailed
> backtraces but I'm very happy to do whatever is needed to help track
> this down.
>
> As per the information on the web page, here is the gdb information:
>
> (gdb) bt
> #0 mc_luma_neon (dst=0x36ac78 "\345\331\325\327\331\343\344",
> <incomplete sequence \345>, i_dst_stride=32, src=0xb5317254,
> i_src_stride=784,
> mvx=0, mvy=0, i_width=8, i_height=8, weight=0x53366a70) at
> common/arm/mc-c.c:146
> #1 0x0005e0c6 in x264_me_refine_qpel_rd (h=0x365c60, m=0xb5317240,
> i_lambda2=2322, i4=12, i_list=0) at encoder/me.c:1210
> #2 0x000563a4 in x264_macroblock_analyse (h=0x365c60) at
> encoder/analyse.c:3362
> #3 0x0001f9b2 in x264_slice_write (h=0x365c60) at encoder/encoder.c:2309
> #4 0x0002057a in x264_slices_write (h=0x365c60) at encoder/encoder.c:2625
> #5 0x0002539e in x264_threadpool_thread (pool=0x3853a0) at
> common/threadpool.c:69
> #6 0xb6e4fed2 in start_thread () from
> /lib/arm-linux-gnueabihf/libpthread.so.0
> #7 0xb6de6058 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
> #8 0xb6de6058 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
> (gdb) disass $pc-32,$pc+32
> Dump of assembler code from 0x71ff4 to 0x72034:
> 0x00071ff4 <mc_luma_neon+132>: mov r0, r5
> 0x00071ff6 <mc_luma_neon+134>: mov r1, r4
> 0x00071ff8 <mc_luma_neon+136>: blx r7
> 0x00071ffa <mc_luma_neon+138>: ldr r3, [r6, #44] ; 0x2c
> 0x00071ffc <mc_luma_neon+140>: cbz r3, 0x7204a
> <mc_luma_neon+218>
> 0x00071ffe <mc_luma_neon+142>: str r6, [sp, #0]
> 0x00072000 <mc_luma_neon+144>: str.w r8, [sp, #4]
> 0x00072004 <mc_luma_neon+148>: ldr.w r6, [r3, r9, lsl #2]
> 0x00072008 <mc_luma_neon+152>: mov r0, r5
> 0x0007200a <mc_luma_neon+154>: mov r1, r4
> 0x0007200c <mc_luma_neon+156>: mov r2, r5
> 0x0007200e <mc_luma_neon+158>: mov r3, r4
> 0x00072010 <mc_luma_neon+160>: blx r6
> 0x00072012 <mc_luma_neon+162>: b.n 0x7204a <mc_luma_neon+218>
> => 0x00072014 <mc_luma_neon+164>: ldr r1, [r6, #44] ; 0x2c
> 0x00072016 <mc_luma_neon+166>: cbz r1, 0x7202e
> <mc_luma_neon+190>
> 0x00072018 <mc_luma_neon+168>: mov.w r9, r9, asr #2
> 0x0007201c <mc_luma_neon+172>: str r6, [sp, #0]
> 0x0007201e <mc_luma_neon+174>: str.w r8, [sp, #4]
> 0x00072022 <mc_luma_neon+178>: ldr.w r6, [r1, r9, lsl #2]
> 0x00072026 <mc_luma_neon+182>: mov r0, r5
> 0x00072028 <mc_luma_neon+184>: mov r1, r4
> 0x0007202a <mc_luma_neon+186>: blx r6
> 0x0007202c <mc_luma_neon+188>: b.n 0x7204a <mc_luma_neon+218>
> 0x0007202e <mc_luma_neon+190>: movw r1, #42212 ; 0xa4e4
> 0x00072032 <mc_luma_neon+194>: movt r1, #8
> End of assembler dump.
> (gdb) info all-registers
> r0 0x0 0
> r1 0xb5317254 3039916628
> r2 0xb4b53172 3031773554
> r3 0x310 784
> r4 0x20 32
> r5 0x36ac78 3583096
> r6 0x53366a70 1396075120
> r7 0x0 0
> r8 0x8 8
> r9 0x8 8
> r10 0x3 3
> r11 0x0 0
> r12 0x0 0
> sp 0xb5316a48 0xb5316a48
> lr 0x0 0
> pc 0x72014 0x72014 <mc_luma_neon+164>
> cpsr 0x40000130 1073742128
>
> I've chopped off the rest of the registers as it very long and doesn't
> seem to contain any relevant information.
>
> Cheers,
>
> Jim.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x264-devel/attachments/20120914/f50f9073/attachment.html>
More information about the x264-devel
mailing list