[FFmpeg-trac] #4121(avcodec:new): Invalid reads when using -flags +qpel+ildct+ilme
FFmpeg
trac at avcodec.org
Thu Nov 20 01:23:06 CET 2014
#4121: Invalid reads when using -flags +qpel+ildct+ilme
--------------------------------------+---------------------------------
Reporter: cehoyos | Owner:
Type: defect | Status: new
Priority: important | Component: avcodec
Version: git-master | Keywords: crash
Blocked By: | Blocking:
Reproduced by developer: 0 | Analyzed by developer: 0
--------------------------------------+---------------------------------
http://thread.gmane.org/gmane.comp.video.ffmpeg.user/54671/focus=54687
A user reported a crash on Windows when encoding interlaced asp. I cannot
reproduce a crash on Linux but I see many invalid reads, may not be a
regression.
{{{
$ valgrind ./ffmpeg_g -cpuflags 0 -threads 1 -i 2014_10_12\
17_42_02_cut.avi -qscale 4 -flags +qpel+ildct+ilme -threads 1 out.avi
==510== Memcheck, a memory error detector
==510== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==510== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==510== Command: ./ffmpeg_g -cpuflags 0 -threads 1 -i 2014_10_12\
17_42_02_cut.avi -qscale 4 -flags +qpel+ildct+ilme -threads 1 out.avi
==510==
ffmpeg version N-67837-g0dba982 Copyright (c) 2000-2014 the FFmpeg
developers
built on Nov 20 2014 01:09:25 with gcc 4.7 (SUSE Linux)
configuration: --enable-gpl
libavutil 54. 14.100 / 54. 14.100
libavcodec 56. 12.101 / 56. 12.101
libavformat 56. 14.100 / 56. 14.100
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, avi, from '2014_10_12 17_42_02_cut.avi':
Metadata:
encoder : Lavf56.14.100
Duration: 00:00:00.08, start: 0.000000, bitrate: 207821 kb/s
Stream #0:0: Video: ffvhuff (FFVH / 0x48564646), yuv420p, 1440x1080,
SAR 4:3 DAR 16:9, 25 fps, 25 tbr, 25 tbn, 25 tbc
Please use -q:a or -q:v, -qscale is ambiguous
Output #0, avi, to 'out.avi':
Metadata:
ISFT : Lavf56.14.100
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1440x1080 [SAR
4:3 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc56.12.101 mpeg4
Stream mapping:
Stream #0:0 -> #0:0 (ffvhuff (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
==510== Invalid read of size 1
==510== at 0x9EE538: put_no_rnd_mpeg4_qpel16_h_lowpass (qpeldsp.c:696)
==510== by 0x9FBD52: put_no_rnd_qpel16_mc21_c (qpeldsp.c:696)
==510== by 0xD1B020: qpel_motion_search (motion_est.c:196)
==510== by 0xD2572E: interlaced_search.constprop.7 (motion_est.c:797)
==510== by 0xD2CF4B: ff_estimate_p_frame_motion (motion_est.c:1023)
==510== by 0x98E0D4: estimate_motion_thread (mpegvideo_enc.c:2628)
==510== by 0xABF0A6: avcodec_default_execute (utils.c:1098)
==510== by 0x99C326: ff_mpv_encode_picture (mpegvideo_enc.c:3545)
==510== by 0xABFF43: avcodec_encode_video2 (utils.c:2091)
==510== by 0x4849B7: reap_filters (ffmpeg.c:1093)
==510== by 0x46E124: main (ffmpeg.c:3705)
==510== Address 0xc2f5a1f is not stack'd, malloc'd or (recently) free'd
==510==
...
...
==510== Invalid read of size 1
==510== at 0x9FD4D3: put_no_rnd_qpel16_mc11_c (copy_block.h:83)
==510== by 0xD1B020: qpel_motion_search (motion_est.c:196)
==510== by 0xD2572E: interlaced_search.constprop.7 (motion_est.c:797)
==510== by 0xD2CF4B: ff_estimate_p_frame_motion (motion_est.c:1023)
==510== by 0x98E0D4: estimate_motion_thread (mpegvideo_enc.c:2628)
==510== by 0xABF0A6: avcodec_default_execute (utils.c:1098)
==510== by 0x99C326: ff_mpv_encode_picture (mpegvideo_enc.c:3545)
==510== by 0xABFF43: avcodec_encode_video2 (utils.c:2091)
==510== by 0x4849B7: reap_filters (ffmpeg.c:1093)
==510== by 0x46E124: main (ffmpeg.c:3705)
==510== Address 0xc2f5ede is not stack'd, malloc'd or (recently) free'd
==510==
frame= 2 fps=0.0 q=4.0 size= 283kB time=00:00:00.08
bitrate=28954.0kbits/s ^Mframe= 2 fps=0.2 q=4.0 size= 283kB
time=00:00:00.08 bitrate=28954.0kbits/s ^Mframe= 2 fps=0.2 q=4.0
Lsize= 283kB time=00:00:00.08 bitrate=28958.0kbits/s
video:277kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 2.046354%
==510==
==510== HEAP SUMMARY:
==510== in use at exit: 128 bytes in 3 blocks
==510== total heap usage: 1,599 allocs, 1,596 frees, 19,877,473 bytes
allocated
==510==
==510== LEAK SUMMARY:
==510== definitely lost: 0 bytes in 0 blocks
==510== indirectly lost: 0 bytes in 0 blocks
==510== possibly lost: 0 bytes in 0 blocks
==510== still reachable: 128 bytes in 3 blocks
==510== suppressed: 0 bytes in 0 blocks
==510== Rerun with --leak-check=full to see details of leaked memory
==510==
==510== For counts of detected and suppressed errors, rerun with: -v
==510== ERROR SUMMARY: 13120 errors from 819 contexts (suppressed: 2 from
2)
}}}
{{{
$ valgrind ./ffmpeg_g -threads 1 -i 2014_10_12\ 17_42_02_cut.avi -qscale 4
-flags +qpel+ildct+ilme -threads 1 out.avi
==580== Memcheck, a memory error detector
==580== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==580== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==580== Command: ./ffmpeg_g -threads 1 -i 2014_10_12\ 17_42_02_cut.avi
-qscale 4 -flags +qpel+ildct+ilme -threads 1 out.avi
==580==
ffmpeg version N-67837-g0dba982 Copyright (c) 2000-2014 the FFmpeg
developers
built on Nov 20 2014 01:09:25 with gcc 4.7 (SUSE Linux)
configuration: --enable-gpl
libavutil 54. 14.100 / 54. 14.100
libavcodec 56. 12.101 / 56. 12.101
libavformat 56. 14.100 / 56. 14.100
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, avi, from '2014_10_12 17_42_02_cut.avi':
Metadata:
encoder : Lavf56.14.100
Duration: 00:00:00.08, start: 0.000000, bitrate: 207821 kb/s
Stream #0:0: Video: ffvhuff (FFVH / 0x48564646), yuv420p, 1440x1080,
SAR 4:3 DAR 16:9, 25 fps, 25 tbr, 25 tbn, 25 tbc
Please use -q:a or -q:v, -qscale is ambiguous
Output #0, avi, to 'out.avi':
Metadata:
ISFT : Lavf56.14.100
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1440x1080 [SAR
4:3 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc56.12.101 mpeg4
Stream mapping:
Stream #0:0 -> #0:0 (ffvhuff (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
==580== Invalid read of size 8
==580== at 0xDA18CD: ??? (qpeldsp.asm:301)
==580== by 0x6300650064006C: ???
==580== by 0x6500640066006D: ???
==580== by 0x6300650064006B: ???
==580== by 0xC31278: put_no_rnd_qpel16_mc21_mmxext (qpeldsp_init.c:505)
==580== by 0xD1B020: qpel_motion_search (motion_est.c:196)
==580== by 0xD2572E: interlaced_search.constprop.7 (motion_est.c:797)
==580== by 0xD2CF4B: ff_estimate_p_frame_motion (motion_est.c:1023)
==580== by 0x98E0D4: estimate_motion_thread (mpegvideo_enc.c:2628)
==580== by 0xABF0A6: avcodec_default_execute (utils.c:1098)
==580== by 0x99C326: ff_mpv_encode_picture (mpegvideo_enc.c:3545)
==580== by 0xABFF43: avcodec_encode_video2 (utils.c:2091)
==580== Address 0xc2f5a1f is not stack'd, malloc'd or (recently) free'd
...
...
==580== Invalid read of size 8
==580== at 0xDA19A0: ??? (qpeldsp.asm:301)
==580== by 0x6665646463615D58: ???
==580== Address 0xc2f5f91 is 9 bytes after a block of size 40 alloc'd
==580== at 0x4C290FE: memalign (in /usr/lib64/valgrind
/vgpreload_memcheck-amd64-linux.so)
==580== by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind
/vgpreload_memcheck-amd64-linux.so)
==580== by 0xE5BB41: av_mallocz (mem.c:95)
==580== by 0xE4E350: av_buffer_allocz (buffer.c:34)
==580== by 0xE4E8FB: av_buffer_pool_get (buffer.c:305)
==580== by 0xABC778: video_get_buffer (utils.c:667)
==580== by 0xABEA99: get_buffer_internal (utils.c:1012)
==580== by 0xABEDB5: ff_get_buffer (utils.c:1025)
==580== by 0x9E13FD: ff_thread_get_buffer (pthread_frame.c:763)
==580== by 0x97F330: ff_alloc_picture (mpegvideo.c:496)
==580== by 0x99D1AF: ff_mpv_encode_picture (mpegvideo_enc.c:1147)
==580== by 0xABFF43: avcodec_encode_video2 (utils.c:2091)
==580==
frame= 2 fps=1.9 q=4.0 size= 283kB time=00:00:00.08
bitrate=28940.8kbits/s video:277kB audio:0kB subtitle:0kB other
streams:0kB global headers:0kB muxing overhead: 2.047666%
==580==
==580== HEAP SUMMARY:
==580== in use at exit: 128 bytes in 3 blocks
==580== total heap usage: 1,595 allocs, 1,592 frees, 19,877,178 bytes
allocated
==580==
==580== LEAK SUMMARY:
==580== definitely lost: 0 bytes in 0 blocks
==580== indirectly lost: 0 bytes in 0 blocks
==580== possibly lost: 0 bytes in 0 blocks
==580== still reachable: 128 bytes in 3 blocks
==580== suppressed: 0 bytes in 0 blocks
==580== Rerun with --leak-check=full to see details of leaked memory
==580==
==580== For counts of detected and suppressed errors, rerun with: -v
==580== ERROR SUMMARY: 1357 errors from 739 contexts (suppressed: 2 from
2)
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4121>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list