[MEncoder-users] mcdeint=2 segfault

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sun Mar 29 16:55:10 CEST 2009


On Sun, Mar 29, 2009 at 01:24:55PM +0200, Christian Ebert wrote:
> * Christian Ebert on Saturday, March 28, 2009 at 23:03:41 +0100
> > * Reimar Döffinger on Saturday, March 28, 2009 at 19:41:31 +0100
> >> Well, it works without issues for me using latest SVN MPlayer on x86_64
> >> Linux. Not even valgrind complains.
> > 
> > $ mplayer -vf yadif=3,mcdeint=2:1:10,framestep=2,softskip,scale,harddup test.mov
> > MPlayer SVN-r29079-4.0.1 (C) 2000-2009 MPlayer Team
> 
> <snip>
>  
> > MPlayer interrupted by signal 11 in module: decode video
> > - MPlayer crashed by bad usage of CPU/FPU/RAM.
> >  Recompile MPlayer with --enable-debug and make a 'gdb' backtrace and
> >  disassembly. Details in DOCS/HTML/en/bugreports_what.html#bugreports_crash.
> > - MPlayer crashed. This shouldn't happen.
> >  It can be a bug in the MPlayer code _or_ in your drivers _or_ in your
> >  gcc version. If you think it's MPlayer's fault, please read
> >  DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and
> >  won't help unless you provide this information when reporting a possible bug.
> > 
> > 
> > Will compile with --enable-debug when I have time to investigate.
> 
> Done with --enable-debug=3 and following the instructions from
> http://www.mplayerhq.hu/DOCS/HTML/en/bugreports_what.html#bugreports_crash
> 
> The backtrace is here:
> 
> http://bugzilla.mplayerhq.hu/show_bug.cgi?id=1426#c1

The bug is in the snow encoder, given the bad state it is in overall I
am not sure if using mccdeint is a good idea.
You can try attached patch, though I have not verified it is correct.
Ideally you should try reproducing this issue with FFmpeg when encoding
to snow (-vcodec snow) and then file a bug report on their bug tracker.
-------------- next part --------------
Index: libavcodec/snow.c
===================================================================
--- libavcodec/snow.c	(revision 18214)
+++ libavcodec/snow.c	(working copy)
@@ -2859,8 +2859,14 @@
             }
         }
     }else{
+        uint8_t *srctmp = cur;
+        uint8_t *dsttmp = cur + block_w*2*block_w*2;
         assert(block_w==8);
-        distortion = s->dsp.me_cmp[0](&s->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, block_w*2);
+        for (y = 0; y < block_w*2; y++) {
+            memcpy(srctmp + y * block_w*2, src + sx + (sy+y)*ref_stride, block_w*2);
+            memcpy(dsttmp + y * block_w*2, dst + sx + (sy+y)*ref_stride, block_w*2);
+        }
+        distortion = s->dsp.me_cmp[0](&s->m, srctmp, dsttmp, block_w*2, block_w*2);
     }
 
     if(plane_index==0){


More information about the MEncoder-users mailing list