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

FFmpeg trac at avcodec.org
Sun Sep 1 07:23:06 CEST 2013


#2896: Using video filters "fieldmatch" and "yadif" together causes crash
-------------------------------------+-------------------------------------
             Reporter:  Mornix       |                    Owner:
                 Type:  defect       |                   Status:  new
             Priority:  important    |                Component:  avfilter
              Version:  git-master   |               Resolution:
             Keywords:  yadif crash  |               Blocked By:
  SIGSEGV                            |  Reproduced by developer:  0
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------

Comment (by Mornix):

 I expanded the macro that GDB was showing where the crash occurred on the
 latest commit (93cf7b01950b9d8e1646227752b522d0275d32df) and this is the
 GDB output:

 {{{
 Starting program: ffmpeg_g.exe -v 9 -loglevel 99 -report -i crash-
 fieldmatch-yadif-sample.mkv -vcodec mpeg2video -vf
 fieldmatch=order=tff:combmatch=full,yadif=deint=interlaced,decimate
 out.mkv
 [New Thread 6328.0x1f98]
 [New Thread 6328.0x150c]
 [New Thread 6328.0x1300]
 [New Thread 6328.0x1a74]
 [New Thread 6328.0x478]
 [New Thread 6328.0x80c]
 [New Thread 6328.0x1e44]
 [New Thread 6328.0x1f94]
 [New Thread 6328.0x1a30]
 [New Thread 6328.0x14b4]
 [New Thread 6328.0x18b4]
 [New Thread 6328.0x580]
 [New Thread 6328.0x134c]
 [New Thread 6328.0xc2c]
 [New Thread 6328.0x173c]
 [New Thread 6328.0x1ef4]

 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 6328.0x80c]
 0x0046e4ce in filter_line_c (dst1=0xa05c6e3, prev1=0x90b3e13,
 cur1=0x9df6073,
     next1=0xa15ecc3, w=710, prefs=768, mrefs=-768, parity=1, mode=0)
     at libavfilter/vf_yadif.c:115
 115             int temporal_diff2 =(FFABS(next[mrefs] - c) +
 FFABS(next[prefs] - e) )>>1;
 #0  0x0046e4ce in filter_line_c (dst1=0xa05c6e3, prev1=0x90b3e13,
     cur1=0x9df6073, next1=0xa15ecc3, w=710, prefs=768, mrefs=-768,
 parity=1,
     mode=0) at libavfilter/vf_yadif.c:115
 #1  0x00471629 in filter_slice (ctx=0x4869fa0, arg=0x28f348, jobnr=4,
     nb_jobs=5) at libavfilter/vf_yadif.c:244
 #2  0x0042a4ab in worker (v=0x48d9960) at libavfilter/pthread.c:88
 #3  0x6248b4c1 in ptw32_threadStart at 4 () from C:\MinGW\bin\pthreadGC2.dll
 #4  0x766e1287 in msvcrt!_itow_s () from C:\Windows\syswow64\msvcrt.dll
 #5  0x766e1328 in msvcrt!_endthreadex () from
 C:\Windows\syswow64\msvcrt.dll
 #6  0x75d133aa in KERNEL32!BaseCleanupAppcompatCacheSupport ()
    from C:\Windows\syswow64\kernel32.dll
 #7  0x0741ffd4 in ?? ()
 #8  0x76ee9f72 in ntdll!RtlpNtSetValueKey ()
    from C:\Windows\system32\ntdll.dll
 #9  0x04869a68 in ?? ()
 #10 0x76ee9f45 in ntdll!RtlpNtSetValueKey ()
    from C:\Windows\system32\ntdll.dll
 #11 0x766e12e5 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            0x3d     61
 ecx            0x9df5db0        165633456
 edx            0x9df63b0        165634992
 ebx            0x12     18
 esp            0x741fdbc        0x741fdbc
 ebp            0xa15efc3        0xa15efc3
 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}}
 }}}

 I've attached the log (ffmpeg-crash-fieldmatch-yadif-log-3.log).

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


More information about the FFmpeg-trac mailing list