[FFmpeg-devel] H.264 Regressions for x86_32/gcc 2.95.3

Michael Niedermayer michaelni
Fri Feb 8 12:32:50 CET 2008


Hi
On Thu, Feb 07, 2008 at 10:31:00PM -0800, Mike Melanson wrote:
> Loren Merritt wrote:
> > Doesn't crash for me (but I don't have gcc 2.95), so I have to ask for all 
> > the normal bugreport details.
> > Also, do your cpu and assembler support ssse3? If not, it might be one of 
> > the previous few commits that broke, and you just weren't using that code.
> 
> For every checkin (though they sometimes get stacked), the code is built 
> for a variety of different gcc versions and the exact same tests are 
> run. The database demonstrates that the tests worked until that commit.
> 
> The testing CPU supports SSSE3. If it did not and it tried to run a bad 
> instruction, the program would have been killed for cause of illegal 
> instruction, not segfault.
> 
> If the assembler did not support the instructions, I tend to think the 
> program would not build at all.
> 
> > If I had to guess, it might be the notorious non-support of aligned 
> > variables.
> 
> Could be:
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x0810ddc4 in put_h264_qpel16_mc23_ssse3 (dst=0x8299fc5 "\203?\020\203? ?",
>      src=0x8653210 '\200' <repeats 64 times>, 
> "\"\213???????????????????????????????\214|xuutsqkif`XPH>71./136;?DHLO^rwz~\203\215\215\215\215\205\177|zzzzz}}}}{|vswqieeeefoxtt\200\201\205\207\210\203|y\177~~\177\203\202\202\202\203\202\204z__][", 
> 'Z' <repeats 12 times>..., stride=140782355)
>      at /home/melanson/ffmpeg/ffmpeg-main/libavcodec/i386/h264dsp_mmx.c:1894
> 1894    QPEL_H264_HV2_XMM(put_,       PUT_OP, ssse3)
> (gdb) bt
> #0  0x0810ddc4 in put_h264_qpel16_mc23_ssse3 (
>      dst=0x8299fc5 "\203?\020\203? ?",
>      src=0x8653210 '\200' <repeats 64 times>, 
> "\"\213???????????????????????????????\214|xuutsqkif`XPH>71./136;?DHLO^rwz~\203\215\215\215\215\205\177|zzzzz}}}}{|vswqieeeefoxtt\200\201\205\207\210\203|y\177~~\177\203\202\202\202\203\202\204z__][", 
> 'Z' <repeats 12 times>..., stride=140782355)
>      at /home/melanson/ffmpeg/ffmpeg-main/libavcodec/i386/h264dsp_mmx.c:1894
> 
> 
> Everything after that in the backtrace is unknown. The dst argument here 
> is shown to be 0x8299fc5. Is that cause for concern?
> 
> I missed the whole alignment debate, apparently (though I see the 
> alignment message on any crash). I am guessing that certain gcc versions 
> < 4.2 do not honor alignment directives? 

There where many aligning bugs in gcc. One was that it ignored alignment
directives for variables on the stack at least sometimes, we had a workaround
for that which loren removed in r11875 (a wanrnig fix ironically). I do not
know if this is related to the problem you have. Possibly r11875 just slows
down the mmx code without really breaking sse*
Another is that gcc couldnt align anything more than the alignment the
stack had on entry (main() or for example avcodec_decode_video())


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080208/9aed3a1a/attachment.pgp>



More information about the ffmpeg-devel mailing list