[MPlayer-users] Segfault in mencoder when using -vop scale

Stephen Mollett molletts at yahoo.com
Fri Feb 28 18:52:01 CET 2003


On Wednesday 26 Feb 2003 21:49, Corey Hickey wrote:
> All right, in that case, please ... submit a
> full report - recompile with debug support, do a gdb backtrace, submit
> samples and a description, etc. Also, try to reduce your encoding
> command to a more simple test case (get rid of options one-by-one and
> see what happens).

OK, here goes.

I've reduced the commandline to:

mencoder -ovc lavc -lavcopts vcodec=mpeg4 -nosound -vop \
scale=640:448,crop=696:488:20:44,pp=ci -o /dev/null cardiff1.avi

which still segfaults. Removing either pp=ci or scale=640:448 or both stops 
the segfault. (Other pp= options also give a segfault.) One thing I didn't 
try originally with the format= option (I didn't think of it until just now; 
I was stuck in a mental rut, certain that the problem had to be scale= or 
codec related) which does appear to stop the segfault is putting format=yv12 
right at the end of the -vop options, ie. as the _first_ 'filter'. This is a 
successful workaround which will keep me going for now but, of course, 
segfaults shouldn't happen :)

I've uploaded a 5MB sample as cardiff1-segfault-sample.avi (and .txt 
containing a summary and a copy of the debug information) which is affected 
by the problem.

Here's the mencoder -v output, taken from within gdb:

Using GNU internationalization
Original domain: messages
Original dirname: /usr/share/locale
Current domain: mplayer
Current dirname: /usr/local/share/locale


MEncoder dev-CVS-030226-17:28-3.2.2 (C) 2000-2003 Arpad Gereoffy (see DOCS)

CPU: Advanced Micro Devices Athlon TB Thunderbird (Family: 6, Stepping: 4)
Detected cache-line size is 64 bytes
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
Reading /root/.mplayer/codecs.conf: can't open '/root/.mplayer/codecs.conf': 
No such file or directory
Reading /usr/local/etc/mplayer/codecs.conf: 50 audio & 135 video codecs
File not found: 'frameno.avi'
Reading config file /root/.mplayer/mencoder: No such file or directory
init_freetype
Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay
Not an URL!
File size is 5242880 bytes
success: format: 0  data: 0x0 - 0x500000
AVI file format detected.
list_end=0x2284
======= AVI Header =======
us/frame: 40000  (fps=25.000)
max bytes/sec: 0
padding: 0
MainAVIHeader.dwFlags: (272) HAS_INDEX IS_INTERLEAVED
frames  total: 5205   initial: 0
streams: 2
Suggested BufferSize: 0
Size:  720 x 576
list_end=0x10F4
==> Found video stream: 0
======= STREAM Header =======
Type: vids   FCC: MJPG (47504A4D)
Flags: 0
Priority: 0   Language: 0
InitialFrames: 0
Rate: 1000000/40000 = 25.000
Start: 0   Len: 5205
Suggested BufferSize: 127189
Quality -1
Sample size: 0
found 'bih', 40 bytes of 40
======= VIDEO Format ======
  biSize 40
  biWidth 720
  biHeight 576
  biPlanes 1
  biBitCount 24
  biCompression 1196444237='MJPG'
  biSizeImage 414720
===========================
list_end=0x2178
==> Found audio stream: 1
======= STREAM Header =======
Type: auds   FCC:  (0)
Flags: 0
Priority: 0   Language: 0
InitialFrames: 1
Rate: 176400/4 = 44100.000
Start: 0   Len: 9181620
Suggested BufferSize: 88200
Quality -1
Sample size: 4
found 'wf', 16 bytes of 18
======= WAVE Format =======
Format Tag: 1 (0x1)
Channels: 2
Samplerate: 44100
avg byte/sec: 176400
Block align: 4
bits/sample: 16
cbSize: 0
list_end=0x2284
Broken chunk?  chunksize=1396  (id=JUNK)
list_end=0x22AD73F8
Found movie at 0x280C - 0x22AD73F8
stream_seek: WARNING! Can't seek to 0x22AD73F8 !
Auto-selected AVI video ID = 0
AVI video size=581740868 (5205)  audio size=0
VIDEO:  [MJPG]  720x576  24bpp  25.00 fps  22353.2 kbps (2728.7 kbyte/s)
[V] filefmt:3  fourcc:0x47504A4D  size:720x576  fps:25.00  ftime:=0.0400
Opening video filter: [expand=-1:-1:-1:-1:1]
Expand: -1 x -1, -1 ; -1  (-1=autodetect) osd: 1
Opening video filter: [scale=640:448]
SwScale params: 640 x 448 (-1=no scaling)
Opening video filter: [crop=696:488:20:44]
Crop: 696 x 488, 20 ; 44
Opening video filter: [pp=ci]
[crop] query(Planar YV12) -> 1
[crop] query(Planar I420) -> 1
[crop] query(Planar IYUV) -> 1
[crop] query(Planar 444P) -> 1
[crop] query(Planar 422P) -> 1
[crop] query(Planar 411P) -> 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
INFO: libavcodec init OK!
Selected video codec: [ffmjpeg] vfm:ffmpeg (FFmpeg MJPEG decoder)
==========================================================================
Writing AVI header...
[ffmpeg] aspect_ratio: 0.000000
VDec: vo config request - 720 x 576 (preferred csp: Planar 422P)
[PP] Using external postprocessing filter, max q = 6.
Trying filter chain: pp crop scale expand lavc
VDec: using Planar 422P as output csp (no 1)
Movie-Aspect is undefined - no prescaling applied.
VO Config (720x576->720x576,flags=0,'MPlayer',0x50323234)
REQ: flags=0x441  req=0x0
REQ: flags=0x441  req=0x400
SwScaler: reducing / aligning filtersize 6 -> 8
SwScaler: reducing / aligning filtersize 6 -> 8
SwScaler: reducing / aligning filtersize 6 -> 5
SwScaler: reducing / aligning filtersize 6 -> 5

SwScaler: BICUBIC scaler, from Planar YV12 to Planar YV12 using MMX2
SwScaler: using 8-tap MMX scaler for horizontal luminance scaling
SwScaler: using 8-tap MMX scaler for horizontal chrominance scaling
SwScaler: using n-tap MMX scaler for vertical scaling (YV12 like)
SwScaler: 696x488 -> 640x448
REQ: flags=0x401  req=0x0
REQ: flags=0x401  req=0x0
videocodec: libavcodec (640x448 fourcc=58564944 [DIVX])
*** [pp] Exporting mp_image_t, 720x576x16bpp YUV planar, 829440 bytes
*** [crop] Allocating mp_image_t, 720x576x12bpp YUV planar, 622080 bytes

Program received signal SIGSEGV, Segmentation fault.

The backtrace follows:

#0  0x081f57fa in postProcess_MMX2 (
    src=0x40707020 
"ÿ}~}\200~{~\200\201\202\204\205\205\205\205\200\177~~}|{{z{{{||||\200\200\200\200\177\177\177\177\177~~~}}}|\200\200\177~~\177\200\201\201\201\201\201\200\177~}~~}}||||zz{}~\177\200\201\200\200\200\200\200\177~}~~~~}}}}{|~\177\201\201\201\201\202\202\201\200~}", 
'|' <repeats 11 times>, 
"{{{{|}~\177\177~}}|||\201\202\203\204\205\206\207\207\203\202\200~|{{{{|}\177\177~|{||}}~~\177\177\201\202\202\202\202\202\203\203\204\204\205\205\205\204\203\203\202\203\204\204\204\204\203\202\201\201\201\201\202\202\202\203"..., 
srcStride=360,
    dst=0x40a25940 
"ÿ~\200\200\202\200}\200\200\201\201\202\202\201\201\201~~~\177~~}}~}~~}\177~~\201\201\201\200\177~}}~~~\177~~}|\177~~}}~\177\200\177\177\177\177~~}}}~}}}}}}|||~}~\177\201\177\177\200\202\201\200\200\177\201\200\202\201\201\201\202\202\177\200\201\201\202\201\200\200\201\201\200\200\177\177\177\177~~~\200~~}}|{{||}}~~~}|~}\177\200\211\213\216\221\223\223\223\222\214\213\210\206\204\202\202\202\201\201\200\202\200~}{|z||\177\202\205\207\217\221\224\227\231\231\231\230\231\231\231\232\231\230\230\227\227\230\232\232\232\232\230\227\227\227\227\227\227\230\230\231"..., 
dstStride=360, width=360, height=576,
    QPs=0x8386bd0 '\001' <repeats 45 times>, QPStride=0, isColor=1,
    c2=0x837cfc0) at libpostproc/postprocess_template.c:2593
#1  0x40a25940 in ?? ()
#2  0x081f6f54 in pp_postprocess (src=0x845f4b8, srcStride=0x845f4c8,
    dst=0x845f520, dstStride=0x845f530, width=360, height=576,
    QP_store=0x8386bd0 '\001' <repeats 45 times>, QPStride=0, vm=0x8378fc8,
    vc=0x837cfc0, pict_type=360) at libpostproc/postprocess.c:476
#3  0x0809f3c6 in put_image (vf=0x8378df8, mpi=0x845f498) at vf_pp.c:127
---Type <return> to continue, or q <return> to quit---
#4  0x0808f451 in decode_video (sh_video=0x835e978,
    start=0x407211c8 
"ÿ\177\202\200\203\204\204\213\215\221\230\235\237¡¢¤¢££¤¥¥¦¦¦¦¦¦¦§§§¦¦¥¤¤¥¥¦¦§©ª¬­
­®®®¯¯°°°±¬«ª©ª«­
®³µ¸º¼ÀÅÉÒÖÚÝÞßáãááààáâãããââááàààââââââââäãâãäãàÞÖÖÓÌû¸¸···¸¼ÀÅÇÎÒØÜÞßàâããããããââààááâããääããâááààâããâáßÝÜÝÝÝÝÝÜÜÜÜÚ×ÕÕÔÒÐÈý¸´±­
ª¤¤£¡\234\227\222\217"..., in_size=1081217480, drop_frame=0)
    at dec_video.c:327
#5  0x08063193 in main (argc=1081217480, argv=0x407211c8) at mencoder.c:1089
#6  0x4037cdc4 in __libc_start_main () from /lib/libc.so.6

Now the disassembly:

Dump of assembler code from 0x81f57da to 0x81f581a:
0x81f57da <postProcess_MMX2+12122>:     movq   %mm1,(%edi,%ebx,1)
0x81f57de <postProcess_MMX2+12126>:     movq   (%esi,%ecx,2),%mm0
0x81f57e2 <postProcess_MMX2+12130>:     movq   (%eax,%ecx,2),%mm1
0x81f57e6 <postProcess_MMX2+12134>:     movq   %mm0,(%edi,%ebx,2)
0x81f57ea <postProcess_MMX2+12138>:     movq   %mm1,(%edx,%ebx,2)
0x81f57ee <postProcess_MMX2+12142>:     movq   (%esi,%ecx,4),%mm0
0x81f57f2 <postProcess_MMX2+12146>:     movq   (%eax,%ecx,4),%mm1
0x81f57f6 <postProcess_MMX2+12150>:     movq   %mm0,(%edi,%ebx,4)
0x81f57fa <postProcess_MMX2+12154>:     movq   %mm1,(%edx,%ebx,4)
0x81f57fe <postProcess_MMX2+12158>:     lea    (%eax,%ecx,4),%eax
0x81f5801 <postProcess_MMX2+12161>:     lea    (%edx,%ebx,4),%edx
0x81f5804 <postProcess_MMX2+12164>:     movq   (%eax,%ecx,1),%mm0
0x81f5808 <postProcess_MMX2+12168>:     movq   (%eax,%ecx,2),%mm1
0x81f580c <postProcess_MMX2+12172>:     movq   %mm0,(%edx,%ebx,1)
0x81f5810 <postProcess_MMX2+12176>:     movq   %mm1,(%edx,%ebx,2)
0x81f5814 <postProcess_MMX2+12180>:
    jmp    0x81f31ee <postProcess_MMX2+2414>
0x81f5819 <postProcess_MMX2+12185>:     mov    0xfffffc90(%ebp),%eax
End of assembler dump.

And the register dump:

eax            0x407211c8       1081217480
ecx            0x168    360
edx            0x40a3fae8       1084488424
ebx            0x168    360
esp            0xbfffde90       0xbfffde90
ebp            0xbfffe238       0xbfffe238
esi            0x40721060       1081217120
edi            0x40a3f980       1084488064
eip            0x81f57fa        0x81f57fa
eflags         0x210246 2163270
cs             0x23     35
ss             0x2b     43
ds             0x2b     43
es             0x2b     43
fs             0x0      0
gs             0x7      7
st0            -nan(0x908885837f807eff) (raw 0xffff908885837f807eff)
st1            -nan(0x8e87868580817efe) (raw 0xffff8e87868580817efe)
st2            -nan(0x07c7b7b7a)        (raw 0xffff000000007c7b7b7a)
st3            -nan(0x07c7c7b7b)        (raw 0xffff000000007c7c7b7b)
st4            -nan(0x7c7b7c7b7c7b7c7c) (raw 0xffff7c7b7c7b7c7b7c7c)
st5            -nan(0x838383838281807f) (raw 0xffff838383838281807f)
st6            -nan(0x7f7f7e7d7d7e7e7f) (raw 0xffff7f7f7e7d7d7e7e7f)
st7            -nan(0x101010101010101)  (raw 0xffff0101010101010101)
---Type <return> to continue, or q <return> to quit---
fctrl          0x37f    895
fstat          0x120    288
ftag           0xaaaa   43690
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0
fooff          0x0      0
fop            0x0      0
xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm1           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
---Type <return> to continue, or q <return> to quit---
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm5           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm6           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
---Type <return> to continue, or q <return> to quit---
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
xmm7           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {
    0x8000000000000000, 0x8000000000000000}, v16_int8 = {
    0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff,
    0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {0xffffffff, 0xffffffff,
    0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff,
    0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
mxcsr          0x1f80   8064
orig_eax       0xffffffff       -1
mm0            {uint64 = 0x908885837f807eff, v2_int32 = {0x7f807eff,
    0x90888583}, v4_int16 = {0x7eff, 0x7f80, 0x8583, 0x9088}, v8_int8 = {0xff,
    0x7e, 0x80, 0x7f, 0x83, 0x85, 0x88, 0x90}}
mm1            {uint64 = 0x8e87868580817efe, v2_int32 = {0x80817efe,
    0x8e878685}, v4_int16 = {0x7efe, 0x8081, 0x8685, 0x8e87}, v8_int8 = {0xfe,
    0x7e, 0x81, 0x80, 0x85, 0x86, 0x87, 0x8e}}
mm2            {uint64 = 0x7c7b7b7a, v2_int32 = {0x7c7b7b7a, 0x0}, v4_int16 = 
{
    0x7b7a, 0x7c7b, 0x0, 0x0}, v8_int8 = {0x7a, 0x7b, 0x7b, 0x7c, 0x0, 0x0,
    0x0, 0x0}}
mm3            {uint64 = 0x7c7c7b7b, v2_int32 = {0x7c7c7b7b, 0x0}, v4_int16 = 
{
    0x7b7b, 0x7c7c, 0x0, 0x0}, v8_int8 = {0x7b, 0x7b, 0x7c, 0x7c, 0x0, 0x0,
    0x0, 0x0}}
mm4            {uint64 = 0x7c7b7c7b7c7b7c7c, v2_int32 = {0x7c7b7c7c,
    0x7c7b7c7b}, v4_int16 = {0x7c7c, 0x7c7b, 0x7c7b, 0x7c7b}, v8_int8 = {0x7c,
---Type <return> to continue, or q <return> to quit---
    0x7c, 0x7b, 0x7c, 0x7b, 0x7c, 0x7b, 0x7c}}
mm5            {uint64 = 0x838383838281807f, v2_int32 = {0x8281807f,
    0x83838383}, v4_int16 = {0x807f, 0x8281, 0x8383, 0x8383}, v8_int8 = {0x7f,
    0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x83}}
mm6            {uint64 = 0x7f7f7e7d7d7e7e7f, v2_int32 = {0x7d7e7e7f,
    0x7f7f7e7d}, v4_int16 = {0x7e7f, 0x7d7e, 0x7e7d, 0x7f7f}, v8_int8 = {0x7f,
    0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7f, 0x7f}}
mm7            {uint64 = 0x101010101010101, v2_int32 = {0x1010101, 0x1010101},
  v4_int16 = {0x101, 0x101, 0x101, 0x101}, v8_int8 = {0x1, 0x1, 0x1, 0x1, 0x1,
    0x1, 0x1, 0x1}}




More information about the MPlayer-users mailing list