[MPlayer-dev-eng] Mencoder crash with x264 - mingw32 on p4 build, maybe other

Zuxy Meng zuxy.meng at gmail.com
Fri Mar 30 04:42:56 CEST 2007


Hi,

2007/3/29, Gianluigi Tiesi <mplayer at netfarm.it>:
> On Thu, Mar 29, 2007 at 09:28:46AM +0800, Zuxy Meng wrote:
> > Hi,
> >
> > 2007/3/29, Gianluigi Tiesi <mplayer at netfarm.it>:
> > >I've been experimenting crashes when trying to encode using x264 or lavc
> > >h264, this happens on a p4 and not on a amd tb k7, this is strange
> > >because the code seams to be mmx.
> >
> > No it's SSE2 code. A 0x66 before an MMX instruction make it an SSE2
> > one. Please update your unassembler:-)
>
> Yes there is a 0x66 before, but I don't known mmx or sse, so I was
> wrong. I thinked about a memalign issue, but I've excluded them
> since I've built the code without forcing sse support
> (on win32 it's disabled by default), so this code is anyway
> compiled in and conditionally executed (not using ifdef)
>
> > >00AB0968    66:0FF535 2C0CC>PMADDWD MM6,QWORD PTR DS:[CE0C2C]
> > >                        ^^^^^^^^^^^^
> > >crash here
> > >
> > >00AB0970    0F12FE          MOVHLPS XMM7,XMM6
> > >00AB0973    66:0FFEF7       PADDD MM6,MM7
> > >00AB0977    F2:             PREFIX REPNE:                            ;
> > >Superfluous prefix
> > >00AB0978    0F70FE 0E       PSHUFW MM7,MM6,0E
> >
> > Actually this should be PSHUFLW XMM7, XMM6, 0E.
> yes but how can I solve it? how can I verify if it's a memalign code ?
> someone can confirm that it works on linux?
>

It's referencing a global that isn't aligned to a 16-byte boundary.
I've tracked the problem to common\i386\pixel-sse2.asm: macro HADDW.
The problematic instruction looks like:
pmaddwd %1, [pw_1 GOT_ebx]

pw_1 is a global so it shouldn't matter whether there's memalign or not.
-- 
Zuxy
Beauty is truth,
While truth is beauty.
PGP KeyID: E8555ED6



More information about the MPlayer-dev-eng mailing list