[FFmpeg-trac] #2896(avfilter:new): Using video filters "fieldmatch" and "yadif" together causes crash

FFmpeg trac at avcodec.org
Sat Aug 24 06:01:34 CEST 2013


#2896: Using video filters "fieldmatch" and "yadif" together causes crash
----------------------------------+--------------------------------------
             Reporter:  Mornix    |                     Type:  defect
               Status:  new       |                 Priority:  normal
            Component:  avfilter  |                  Version:  git-master
             Keywords:            |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+--------------------------------------
 Trying to detelecine a video as shown on the [http://ffmpeg.org/ffmpeg-
 filters.html#Examples-15 filter page] specifically using fieldmatch and
 yadif together causes FFmpeg to crash.
 It does not,however, crash at the same point each attempt.

 How to reproduce:
 {{{
 % ffmpeg -i in.mkv -vcodec mpeg2video -vf
 fieldmatch=order=tff:combmatch=full,yadif=deint=interlaced,decimate
 out.mkv
 ffmpeg git version b99d3613cfdb5714a3c0e18b0db209280d879a10
 built on Windows 7(x64)
 }}}
 I did two attempts and logged both. I've attached the FFmpeg logs for both
 and below are the GDB output for each.

 Attempt 1
 {{{
 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 6320.0x1750]
 0x0046e4ce in filter_line_c (dst1=0xa0b1303, prev1=0x9b84973,
 cur1=0x9082793,
     next1=0xa006b83, w=710, prefs=768, mrefs=-768, parity=1, mode=0)
     at libavfilter/vf_yadif.c:108
 108         FILTER(0, w, 1)
 #0  0x0046e4ce in filter_line_c (dst1=0xa0b1303, prev1=0x9b84973,
     cur1=0x9082793, next1=0xa006b83, w=710, prefs=768, mrefs=-768,
 parity=1,
     mode=0) at libavfilter/vf_yadif.c:108
 #1  0x00471629 in filter_slice (ctx=0x47ff340, arg=0x28f348, jobnr=4,
     nb_jobs=5) at libavfilter/vf_yadif.c:204
 #2  0x0042a4ab in worker (v=0x6024060) at libavfilter/pthread.c:88
 #3  0x6248b4c1 in ptw32_threadStart at 4 () from c:\MinGW\bin\pthreadGC2.dll
 #4  0x76541287 in msvcrt!_itow_s () from C:\Windows\syswow64\msvcrt.dll
 #5  0x76541328 in msvcrt!_endthreadex () from
 C:\Windows\syswow64\msvcrt.dll
 #6  0x767933aa in KERNEL32!BaseCleanupAppcompatCacheSupport ()
    from C:\Windows\syswow64\kernel32.dll
 #7  0x0742ffd4 in ?? ()
 #8  0x77739f72 in ntdll!RtlpNtSetValueKey ()
    from C:\Windows\system32\ntdll.dll
 #9  0x047fe8a8 in ?? ()
 #10 0x77739f45 in ntdll!RtlpNtSetValueKey ()
    from C:\Windows\system32\ntdll.dll
 #11 0x765412e5 in msvcrt!_endthreadex () from
 C:\Windows\syswow64\msvcrt.dll
 #12 0x00000000 in ?? ()

 Dump of assembler code from 0x46e4ae to 0x46e4ee:
    0x0046e4ae <filter_line_c+482>:      decb   0xf3c246c(%ebx)
    0x0046e4b4 <filter_line_c+488>:      mov    $0x6c,%dh
    0x0046e4b6 <filter_line_c+490>:      add    $0x246c8900,%eax
    0x0046e4bb <filter_line_c+495>:      or     $0x2b,%al
    0x0046e4bd <filter_line_c+497>:      insb   (%dx),%es:(%edi)
    0x0046e4be <filter_line_c+498>:      and    $0x8,%al
    0x0046e4c0 <filter_line_c+500>:      mov    %ebp,0x14(%esp)
    0x0046e4c4 <filter_line_c+504>:      js     0x46e774
 <filter_line_c+1192>
    0x0046e4ca <filter_line_c+510>:      mov    0x38(%esp),%ebp
 => 0x0046e4ce <filter_line_c+514>:      movzbl 0x0(%ebp,%eax,1),%ebp
    0x0046e4d3 <filter_line_c+519>:      mov    %ebp,0xc(%esp)
    0x0046e4d7 <filter_line_c+523>:      sub    0x4(%esp),%ebp
    0x0046e4db <filter_line_c+527>:      js     0x46e76c
 <filter_line_c+1184>
    0x0046e4e1 <filter_line_c+533>:      add    0x14(%esp),%ebp
    0x0046e4e5 <filter_line_c+537>:      sar    %ebp
    0x0046e4e7 <filter_line_c+539>:      cmp    %ebp,%esi
    0x0046e4e9 <filter_line_c+541>:      jge    0x46e4ed
 <filter_line_c+545>
    0x0046e4eb <filter_line_c+543>:      mov    %ebp,%esi
    0x0046e4ed <filter_line_c+545>:      sub    %ebx,%edi
 End of assembler dump.

 eax            0x17d    381
 ecx            0x9082610        151528976
 edx            0x9082c10        151530512
 ebx            0x4a     74
 esp            0x742fdbc        0x742fdbc
 ebp            0xa006e83        0xa006e83
 esi            0x3      3
 edi            0x46     70
 eip            0x46e4ce 0x46e4ce <filter_line_c+514>
 eflags         0x10213  [ CF AF IF RF ]
 cs             0x23     35
 ss             0x2b     43
 ds             0x2b     43
 es             0x2b     43
 fs             0x53     83
 gs             0x2b     43
 st0            0        (raw 0x00000000000000000000)
 st1            0        (raw 0x00000000000000000000)
 st2            0        (raw 0x00000000000000000000)
 st3            0        (raw 0x00000000000000000000)
 st4            0        (raw 0x00000000000000000000)
 st5            0        (raw 0x00000000000000000000)
 st6            0        (raw 0x00000000000000000000)
 st7            0        (raw 0x00000000000000000000)
 fctrl          0x27f    639
 fstat          0x0      0
 ftag           0xffff   65535
 fiseg          0x0      0
 fioff          0x0      0
 foseg          0x0      0
 fooff          0x0      0
 fop            0x0      0
 xmm0           {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}
 xmm1           {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}
 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, 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}
 xmm5           {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}
 xmm6           {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}
 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          0x1f80   [ 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 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 mm5            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 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}}
 }}}

 Attempt 2

 {{{
 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 6040.0x498]
 0x0046e4ce in filter_line_c (dst1=0x9ebd923, prev1=0x9063ef3,
 cur1=0x9f60213,
     next1=0xa1b9b03, w=710, prefs=768, mrefs=-768, parity=1, mode=0)
     at libavfilter/vf_yadif.c:108
 108         FILTER(0, w, 1)
 #0  0x0046e4ce in filter_line_c (dst1=0x9ebd923, prev1=0x9063ef3,
     cur1=0x9f60213, next1=0xa1b9b03, w=710, prefs=768, mrefs=-768,
 parity=1,
     mode=0) at libavfilter/vf_yadif.c:108
 #1  0x00471629 in filter_slice (ctx=0x3af380, arg=0x28f348, jobnr=4,
     nb_jobs=5) at libavfilter/vf_yadif.c:204
 #2  0x0042a4ab in worker (v=0x4844060) at libavfilter/pthread.c:88
 #3  0x6248b4c1 in ptw32_threadStart at 4 () from c:\MinGW\bin\pthreadGC2.dll
 #4  0x76541287 in msvcrt!_itow_s () from C:\Windows\syswow64\msvcrt.dll
 #5  0x76541328 in msvcrt!_endthreadex () from
 C:\Windows\syswow64\msvcrt.dll
 #6  0x767933aa in KERNEL32!BaseCleanupAppcompatCacheSupport ()
    from C:\Windows\syswow64\kernel32.dll
 #7  0x0752ffd4 in ?? ()
 #8  0x77739f72 in ntdll!RtlpNtSetValueKey ()
    from C:\Windows\system32\ntdll.dll
 #9  0x003aedc0 in ?? ()
 #10 0x77739f45 in ntdll!RtlpNtSetValueKey ()
    from C:\Windows\system32\ntdll.dll
 #11 0x765412e5 in msvcrt!_endthreadex () from
 C:\Windows\syswow64\msvcrt.dll
 #12 0x00000000 in ?? ()

 Dump of assembler code from 0x46e4ae to 0x46e4ee:
    0x0046e4ae <filter_line_c+482>:      decb   0xf3c246c(%ebx)
    0x0046e4b4 <filter_line_c+488>:      mov    $0x6c,%dh
    0x0046e4b6 <filter_line_c+490>:      add    $0x246c8900,%eax
    0x0046e4bb <filter_line_c+495>:      or     $0x2b,%al
    0x0046e4bd <filter_line_c+497>:      insb   (%dx),%es:(%edi)
    0x0046e4be <filter_line_c+498>:      and    $0x8,%al
    0x0046e4c0 <filter_line_c+500>:      mov    %ebp,0x14(%esp)
    0x0046e4c4 <filter_line_c+504>:      js     0x46e774
 <filter_line_c+1192>
    0x0046e4ca <filter_line_c+510>:      mov    0x38(%esp),%ebp
 => 0x0046e4ce <filter_line_c+514>:      movzbl 0x0(%ebp,%eax,1),%ebp
    0x0046e4d3 <filter_line_c+519>:      mov    %ebp,0xc(%esp)
    0x0046e4d7 <filter_line_c+523>:      sub    0x4(%esp),%ebp
    0x0046e4db <filter_line_c+527>:      js     0x46e76c
 <filter_line_c+1184>
    0x0046e4e1 <filter_line_c+533>:      add    0x14(%esp),%ebp
    0x0046e4e5 <filter_line_c+537>:      sar    %ebp
    0x0046e4e7 <filter_line_c+539>:      cmp    %ebp,%esi
    0x0046e4e9 <filter_line_c+541>:      jge    0x46e4ed
 <filter_line_c+545>
    0x0046e4eb <filter_line_c+543>:      mov    %ebp,%esi
    0x0046e4ed <filter_line_c+545>:      sub    %ebx,%edi
 End of assembler dump.

 eax            0x1fd    509
 ecx            0x9f60110        167117072
 edx            0x9f60710        167118608
 ebx            0x12     18
 esp            0x752fdbc        0x752fdbc
 ebp            0xa1b9e03        0xa1b9e03
 esi            0x0      0
 edi            0x12     18
 eip            0x46e4ce 0x46e4ce <filter_line_c+514>
 eflags         0x10202  [ IF RF ]
 cs             0x23     35
 ss             0x2b     43
 ds             0x2b     43
 es             0x2b     43
 fs             0x53     83
 gs             0x2b     43
 st0            0        (raw 0x00000000000000000000)
 st1            0        (raw 0x00000000000000000000)
 st2            0        (raw 0x00000000000000000000)
 st3            0        (raw 0x00000000000000000000)
 st4            0        (raw 0x00000000000000000000)
 st5            0        (raw 0x00000000000000000000)
 st6            0        (raw 0x00000000000000000000)
 st7            0        (raw 0x00000000000000000000)
 fctrl          0x27f    639
 fstat          0x0      0
 ftag           0xffff   65535
 fiseg          0x0      0
 fioff          0x0      0
 foseg          0x0      0
 fooff          0x0      0
 fop            0x0      0
 xmm0           {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}
 xmm1           {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}
 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, 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}
 xmm5           {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}
 xmm6           {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}
 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          0x1f80   [ 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 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 mm5            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 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}}
 }}}

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2896>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list