Opened 16 years ago

Last modified 13 years ago

#1059 new defect

MPlayer (liba52) crash on Vista 32-bit (CPU T5600) Compiled with MinGW GCC 4.2.1-dw2

Reported by: liuxiaogenius@… Owned by: reimar
Priority: important Component: ad
Version: HEAD Severity: major
Keywords: Cc: mplayer@…
Blocked By: Blocking:
Reproduced by developer: no Analyzed by developer: no

Description

Both the latest svn and 1.0rc2 crash.

My System is Vista Home Basic 32-bit Edition, Core 2 T5600

Compiled with MinGW GCC 4.2.1-dw2

when playing a file with ac3 audio it crashes.

But ffac3 can play the audio properly (but it seems -ao pcm fails)

so maybe there is something wrong with liba52. Should I try to replace the
routine imdct_512_do_sse with the no-optimization Version ? ...

(gdb) run 1.mkv
Starting program: D:\zor\workspace\zmet4win\mplayer/mplayer.exe 1.mkv
MPlayer dev-SVN-r26384-4.2.1-dw2 (C) 2000-2008 MPlayer Team
CPU: Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz (Family: 6, Model: 15, Step
ping: 2)
CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2

Playing 1.mkv.
[mkv] Track ID 1: video (V_MPEG4/ISO/AVC), -vid 0
[mkv] Track ID 2: audio (A_AC3) "AC3 3_2ch 448Kbps", -aid 0, -alang jpn
[mkv] Track ID 3: subtitles (S_TEXT/SSA) "Simplified", -sid 0, -slang chi
[mkv] Track ID 4: subtitles (S_TEXT/SSA) "Traditional", -sid 1, -slang chi
[mkv] Will play video track 1.
Matroska file format detected.
VIDEO: [avc1] 640x480 24bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
[VO_SDL] Using driver: windib.
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [liba52] AC3 decoding with liba52
Using SSE optimized IMDCT transform
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)
==========================================================================
[AO SDL] Samplerate: 48000Hz Channels: Stereo Format s16le
AO: [sdl] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...

Breakpoint 1, 0x008545f6 in imdct_do_512_sse (data=0x2b53490,

delay=0x2b54c90, bias=384) at imdct.c:759

759 asm volatile(
(gdb) bt
#0 0x008545f6 in imdct_do_512_sse (data=0x2b53490, delay=0x2b54c90, bias=384)

at imdct.c:759

#1 0x0085275b in a52_block (state=0x2b52338) at parse.c:904
#2 0x0047351d in decode_audio (sh_audio=0x2b10300, buf=0x2b40b20 "",

minlen=32896, maxlen=71680) at ad_liba52.c:306

#3 0x00470614 in decode_audio (sh_audio=0x2b10300, minlen=32768)

at dec_audio.c:383

#4 0x0040546b in main (argc=2, argv=0x3e2d68) at mplayer.c:2039
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x8545d6 to 0x854616:
0x008545d6 <imdct_do_512_sse+22>: cwtl
0x008545d7 <imdct_do_512_sse+23>: mov %es,(%eax)
0x008545d9 <imdct_do_512_sse+25>: mov $0x3f0,%edi
0x008545de <imdct_do_512_sse+30>: push %ebp
0x008545df <imdct_do_512_sse+31>: nop
0x008545e0 <imdct_do_512_sse+32>: movlps (%ebx,%esi,1),%xmm0
0x008545e4 <imdct_do_512_sse+36>: movhps 0x8(%ebx,%edi,1),%xmm0
0x008545e9 <imdct_do_512_sse+41>: movlps 0x8(%ebx,%esi,1),%xmm1
0x008545ee <imdct_do_512_sse+46>: movhps (%ebx,%edi,1),%xmm1
0x008545f2 <imdct_do_512_sse+50>: shufps $0x33,%xmm1,%xmm0
0x008545f6 <imdct_do_512_sse+54>: movaps 0xbb74e8(%esi),%xmm2
0x008545fd <imdct_do_512_sse+61>: mulps %xmm0,%xmm2
0x00854600 <imdct_do_512_sse+64>: shufps $0xb1,%xmm0,%xmm0
0x00854604 <imdct_do_512_sse+68>: mulps 0xbb78e8(%esi),%xmm0
0x0085460b <imdct_do_512_sse+75>: subps %xmm0,%xmm2
0x0085460e <imdct_do_512_sse+78>: movzbl (%eax),%edx
0x00854611 <imdct_do_512_sse+81>: movzbl 0x1(%eax),%ebp
0x00854615 <imdct_do_512_sse+85>: movlps %xmm2,(%ecx,%edx,8)
End of assembler dump.
(gdb) info all-registers
eax 0x8c9860 9214048
ecx 0xbb6ce8 12283112
edx 0x2b52338 45425464
ebx 0x2b53490 45429904
esp 0x22eb58 0x22eb58
ebp 0x22eb78 0x22eb78
esi 0x0 0
edi 0x3f0 1008
eip 0x8545f6 0x8545f6 <imdct_do_512_sse+54>
eflags 0x246 [ PF ZF IF ]
cs 0x1b 27
ss 0x23 35
ds 0x23 35
es 0x23 35
fs 0x3b 59
gs 0x0 0
st0 0 (raw 0x00000000000000000000)
st1 0 (raw 0x00000000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 1.4142135623730951 (raw 0x3fffb504f333f9de6485)
st5 -10449 (raw 0xc00ca344000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0xffff037f -64641
fstat 0xffff0120 -65248
ftag 0xffffffff -1
fiseg 0x1b 27
fioff 0x857386 8745862
foseg 0xffff0023 -65501
fooff 0x22eb6c 2288492
fop 0x15d 349
xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},

v16_int8 = {0x0, 0x0, 0x0, 0x0, 0xf6, 0x8a, 0x1e, 0x38, 0x0, 0x0, 0x0, 0x0,

0xcd, 0x7f, 0x4c, 0x37}, v8_int16 = {0x0, 0x0, 0x8af6, 0x381e, 0x0, 0x0,
0x7fcd, 0x374c}, v4_int32 = {0x0, 0x381e8af6, 0x0, 0x374c7fcd},

v2_int64 = {0x381e8af600000000, 0x374c7fcd00000000},
uint128 = 0x374c7fcd00000000381e8af600000000}

xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},

v16_int8 = {0xcd, 0x7f, 0x4c, 0x37, 0xdc, 0x7b, 0xd4, 0xb6, 0x0, 0x0, 0x0,

0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x7fcd, 0x374c, 0x7bdc, 0xb6d4,
0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x374c7fcd, 0xb6d47bdc, 0x0, 0x0},

v2_int64 = {0xb6d47bdc374c7fcd, 0x0},
uint128 = 0x0000000000000000b6d47bdc374c7fcd}

xmm2 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},

v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,

0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},

uint128 = 0x00000000000000000000000000000000}

xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},

v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,

0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},

uint128 = 0x00000000000000000000000000000000}

xmm4 {v4_float = {0x0, 0x0, 0xdb0, 0x0}, v2_double = {0x0,

0x8000000000000000}, v16_int8 = {0x32, 0x30, 0x2c, 0x35, 0x2c, 0x31, 0xd,
0xa, 0xd, 0xa, 0x5b, 0x45, 0x76, 0x65, 0x6e, 0x74}, v8_int16 = {0x3032,
0x352c, 0x312c, 0xa0d, 0xa0d, 0x455b, 0x6576, 0x746e}, v4_int32 = {
0x352c3032, 0xa0d312c, 0x455b0a0d, 0x746e6576}, v2_int64 = {
0xa0d312c352c3032, 0x746e6576455b0a0d},

uint128 = 0x746e6576455b0a0d0a0d312c352c3032}

xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {

0x8000000000000000, 0x8000000000000000}, v16_int8 = {0x73, 0x5d, 0xd,
0xa, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x3a, 0x20, 0x4d, 0x61, 0x72,
0x6b}, v8_int16 = {0x5d73, 0xa0d, 0x6f46, 0x6d72, 0x7461, 0x203a, 0x614d,
0x6b72}, v4_int32 = {0xa0d5d73, 0x6d726f46, 0x203a7461, 0x6b72614d},

v2_int64 = {0x6d726f460a0d5d73, 0x6b72614d203a7461},
uint128 = 0x6b72614d203a74616d726f460a0d5d73}

xmm6 {v4_float = {0x0, 0x0, 0xa02, 0x0}, v2_double = {

0x8000000000000000, 0x0}, v16_int8 = {0x65, 0x64, 0x2c, 0x20, 0x53, 0x74,
0x61, 0x72, 0x74, 0x2c, 0x20, 0x45, 0x6e, 0x64, 0x2c, 0x20}, v8_int16 = {
0x6465, 0x202c, 0x7453, 0x7261, 0x2c74, 0x4520, 0x646e, 0x202c},

v4_int32 = {0x202c6465, 0x72617453, 0x45202c74, 0x202c646e}, v2_int64 = {

0x72617453202c6465, 0x202c646e45202c74},

uint128 = 0x202c646e45202c7472617453202c6465}

xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},

v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,

0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},

uint128 = 0x00000000000000000000000000000000}

mxcsr 0x1fa0 [ PE IM DM ZM OM UM PM ]
mm0 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,

0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

mm1 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,

0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

mm2 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,

0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

mm3 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,

0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

mm4 {uint64 = 0xb504f333f9de6485, v2_int32 = {0xf9de6485,

0xb504f333}, v4_int16 = {0x6485, 0xf9de, 0xf333, 0xb504}, v8_int8 = {
0x85, 0x64, 0xde, 0xf9, 0x33, 0xf3, 0x4, 0xb5}}

mm5 {uint64 = 0xa344000000000000, v2_int32 = {0x0, 0xa3440000},

v4_int16 = {0x0, 0x0, 0x0, 0xa344}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0,

0x0, 0x44, 0xa3}}

mm6 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,

0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

mm7 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,

0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

(gdb)

Attachments (1)

mplayer.bug (8.0 KB ) - added by tamoihl1@… 16 years ago.
Mplayer dump file

Download all attachments as: .zip

Change History (8)

comment:1 by liuxiaogenius@…, 16 years ago

When I delete imdct_do_512_sse and

#define imdct_do_512_sse imdct_do_512

It works fine.

Some thing wrong with the asm code? or the Compiler? or the CPU....

comment:2 by compn, 16 years ago

--disable-sse might also work
it was disabled on mingw for a long time because of some crashes

not sure what current status is

comment:3 by liuxiaogenius@…, 16 years ago

(In reply to comment #2)

--disable-sse might also work
it was disabled on mingw for a long time because of some crashes

not sure what current status is

Thank you for reply

--disable-sse will disable other sse optimization...So I prefer Delete the function in imdct.c (Haha, the advantage of open source)

I just use ./configure to configure, It doesn't disable sse...

All right. Then I know it has no cure now.

by tamoihl1@…, 16 years ago

Attachment: mplayer.bug added

Mplayer dump file

comment:4 by tamoihl1@…, 16 years ago

comment:5 by tamoihl1@…, 16 years ago

I dont know if it's the same problem here or a new bug. When I try to play a MPEG2-PS file with ac3 sound MPlayer crashes. Maybe the attached core dump can help. I'm using Ubuntu Hardy and gcc 4.2.3.

comment:6 by mplayer@…, 16 years ago

Cc: mplayer@… added

I've already explained my test results on the ml.

I had same problem in my builds

using binutils 2.18 + mingw runtime compiled using bu 2.18:

  • attribute aligned 16 does not always work (in this case you'll get a crash)
  • attribute aligned > 16 just forget the idea

using binutils 2.17 + mingw runtime compiled with bu 2.17:

  • attribute aligned 16 always work
  • attribute aligned > 16 just forget the idea

So if you are using new binutils downgrade to 2.17
mingw runtime from mingw looks ok

you may try my Full Build environment:
http://sourceforge.net/project/downloading.php?groupname=mplayer-win32&filename=MinGW-full-gcc-4.2.3.7z

mplayer p4 builds: liba52 ok, x264 ok, xvid ok

imho the bug cannot be fixed "mplayer side"

Regards

comment:7 by compn, 13 years ago

Owner: changed from r_togni@… to reimar
Note: See TracTickets for help on using tickets.