[FFmpeg-trac] #4964(avfilter:new): decimate filter crashes with ppsrc option

FFmpeg trac at avcodec.org
Sun Oct 25 20:27:05 CET 2015


#4964: decimate filter crashes with ppsrc option
---------------------------------------+----------------------------------
               Reporter:  Cigaes       |                  Owner:
                   Type:  defect       |                 Status:  new
               Priority:  normal       |              Component:  avfilter
                Version:  unspecified  |               Keywords:  crash
             Blocked By:               |               Blocking:
Reproduced by developer:  0            |  Analyzed by developer:  0
---------------------------------------+----------------------------------
 {{{
 ./ffmpeg_g -f lavfi -i testsrc=s=1024x768 \
            -f lavfi -i testsrc \
            -lavfi 'decimate=ppsrc=1' -f framecrc -
 }}}
 yields
 {{{
 ffmpeg version N-76264-g6bfc6d0 Copyright (c) 2000-2015 the FFmpeg
 developers
   built with gcc 5.2.1 (Debian 5.2.1-22) 20151010
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 opengl --assert-level=2
   libavutil      55.  4.100 / 55.  4.100
   libavcodec     57.  9.100 / 57.  9.100
   libavformat    57. 11.100 / 57. 11.100
   libavdevice    57.  0.100 / 57.  0.100
   libavfilter     6. 13.100 /  6. 13.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.100 /  2.  0.100
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, lavfi, from 'testsrc=s=1024x768':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 1024x768
 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
 Input #1, lavfi, from 'testsrc':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #1:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 320x240
 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
 #software: Lavf57.11.100
 #tb 0: 1/20
 Output #0, framecrc, to 'pipe:':
   Metadata:
     encoder         : Lavf57.11.100
     Stream #0:0: Video: rawvideo (444P / 0x50343434), yuv444p, 320x240
 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 20 fps, 20 tbn, 20 tbc (default)
     Metadata:
       encoder         : Lavc57.9.100 rawvideo
 Stream mapping:
   Stream #0:0 (rawvideo) -> decimate:main
   Stream #1:0 (rawvideo) -> decimate:clean_src
   decimate -> Stream #0:0 (rawvideo)
 Press [q] to stop, [?] for help
 zsh: segmentation fault  ./ffmpeg_g -f lavfi -i testsrc=s=1024x768 -f
 lavfi -i testsrc -lavfi  -f  -
 }}}

 {{{
 ==31113== Invalid read of size 1      0kB time=00:00:00.00 bitrate=N/A
 ==31113==    at 0x50EB2A0: calc_diffs (vf_decimate.c:121)
 ==31113==    by 0x50EB2A0: filter_frame (vf_decimate.c:174)
 ==31113==    by 0x50C1C46: ff_filter_frame_framed (avfilter.c:1082)
 ==31113==    by 0x50C296C: ff_filter_frame (avfilter.c:1176)
 ==31113==    by 0x5134A12: filter_frame (vf_scale.c:583)
 ==31113==    by 0x50C1C46: ff_filter_frame_framed (avfilter.c:1082)
 ==31113==    by 0x50C296C: ff_filter_frame (avfilter.c:1176)
 ==31113==    by 0x50C6C11: request_frame (buffersrc.c:382)
 ==31113==    by 0x50C691A: av_buffersrc_add_frame_internal
 (buffersrc.c:180)
 ==31113==    by 0x50C6CAC: av_buffersrc_add_frame_flags (buffersrc.c:105)
 ==31113==    by 0x41FD21: decode_video (ffmpeg.c:2189)
 ==31113==    by 0x42626F: process_input_packet (ffmpeg.c:2333)
 ==31113==    by 0x42626F: process_input (ffmpeg.c:3946)
 ==31113==    by 0x42626F: transcode_step (ffmpeg.c:4034)
 ==31113==    by 0x42626F: transcode (ffmpeg.c:4088)
 ==31113==    by 0x407A33: main (ffmpeg.c:4281)
 ==31113==  Address 0x1697419f is 0 bytes after a block of size 81,951
 alloc'd
 ==31113==    at 0x4C2B086: memalign (in /usr/lib/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==31113==    by 0x4C2B191: posix_memalign (in /usr/lib/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==31113==    by 0x727E3E6: av_malloc (mem.c:97)
 ==31113==    by 0x726DD98: av_buffer_alloc (buffer.c:71)
 ==31113==    by 0x7278805: get_video_buffer (frame.c:193)
 ==31113==    by 0x7278805: av_frame_get_buffer (frame.c:277)
 ==31113==    by 0x5156F98: ff_default_get_video_buffer (video.c:55)
 ==31113==    by 0x5134713: filter_frame (vf_scale.c:516)
 ==31113==    by 0x50C1C46: ff_filter_frame_framed (avfilter.c:1082)
 ==31113==    by 0x50C296C: ff_filter_frame (avfilter.c:1176)
 ==31113==    by 0x50C6C11: request_frame (buffersrc.c:382)
 ==31113==    by 0x50C691A: av_buffersrc_add_frame_internal
 (buffersrc.c:180)
 ==31113==    by 0x50C6CAC: av_buffersrc_add_frame_flags (buffersrc.c:105)
 }}}

 A quick test seems to indicate that it using the resolution of the full
 frame to compute the difference. The problem does not happen with inputs
 at the same time.

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


More information about the FFmpeg-trac mailing list