Opened 8 years ago

Closed 8 years ago

#5613 closed defect (fixed)

Memleak with -flags +truncated

Reported by: Carl Eugen Hoyos Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: leak regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

http://thread.gmane.org/gmane.comp.video.ffmpeg.libav.user/15427

$ ffmpeg -f lavfi -i testsrc=d=10 out.avi
$ valgrind --leak-check=full ./ffmpeg_g -flags +truncated -i out.avi -f null -
==20378== Memcheck, a memory error detector
==20378== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==20378== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==20378== Command: ./ffmpeg_g -flags +truncated -i out.avi -f null -
==20378==
ffmpeg version N-80195-g87c53e5 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      55. 24.100 / 55. 24.100
  libavcodec     57. 44.101 / 57. 44.101
  libavformat    57. 37.101 / 57. 37.101
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 46.100 /  6. 46.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, avi, from 'out.avi':
  Metadata:
    encoder         : Lavf57.37.100
  Duration: 00:00:10.00, start: 0.000000, bitrate: 331 kb/s
    Stream #0:0: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 323 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
[null @ 0xb650ba0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf57.37.101
    Stream #0:0: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
    Metadata:
      encoder         : Lavc57.44.101 wrapped_avframe
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
frame=  125 fps=0.0 q=-0.0 Lsize=N/A time=00:00:10.00 bitrate=N/A speed=12.1x
video:60kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
==20378==
==20378== HEAP SUMMARY:
==20378==     in use at exit: 17,316 bytes in 4 blocks
==20378==   total heap usage: 10,532 allocs, 10,528 frees, 2,822,040 bytes allocated
==20378==
==20378== 8,614 bytes in 1 blocks are definitely lost in loss record 3 of 4
==20378==    at 0x4C2ABED: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20378==    by 0x4C2AD6F: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20378==    by 0x1097C93: av_fast_realloc (mem.c:168)
==20378==    by 0xAB1F98: ff_combine_frame (parser.c:267)
==20378==    by 0x7E2E8F: ff_h263_decode_frame (h263dec.c:448)
==20378==    by 0xBBA407: avcodec_decode_video2 (utils.c:2217)
==20378==    by 0xBBB08F: do_decode (utils.c:2727)
==20378==    by 0xBBBEF7: avcodec_send_packet (utils.c:2813)
==20378==    by 0x6D38E4: try_decode_frame (utils.c:2899)
==20378==    by 0x6DC2C5: avformat_find_stream_info (utils.c:3595)
==20378==    by 0x48CA50: open_input_file (ffmpeg_opt.c:999)
==20378==    by 0x486582: open_files.isra.8 (ffmpeg_opt.c:3033)
==20378==
==20378== 8,614 bytes in 1 blocks are definitely lost in loss record 4 of 4
==20378==    at 0x4C2ABED: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20378==    by 0x4C2AD6F: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20378==    by 0x1097C93: av_fast_realloc (mem.c:168)
==20378==    by 0xAB1F98: ff_combine_frame (parser.c:267)
==20378==    by 0x7E2E8F: ff_h263_decode_frame (h263dec.c:448)
==20378==    by 0xBBA407: avcodec_decode_video2 (utils.c:2217)
==20378==    by 0x49985C: decode_video (ffmpeg.c:2087)
==20378==    by 0x49CE76: transcode (ffmpeg.c:2340)
==20378==    by 0x47EC6A: main (ffmpeg.c:4350)
==20378==
==20378== LEAK SUMMARY:
==20378==    definitely lost: 17,228 bytes in 2 blocks
==20378==    indirectly lost: 0 bytes in 0 blocks
==20378==      possibly lost: 0 bytes in 0 blocks
==20378==    still reachable: 88 bytes in 2 blocks
==20378==         suppressed: 0 bytes in 0 blocks
==20378== Reachable blocks (those to which a pointer was found) are not shown.
==20378== To see them, rerun with: --leak-check=full --show-reachable=yes
==20378==
==20378== For counts of detected and suppressed errors, rerun with: -v
==20378== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 2 from 2)

Regression since b160fc290cf49b516c5b6ee0730fd9da7fc623b1

Change History (1)

comment:1 by Michael Niedermayer, 8 years ago

Reproduced by developer: set
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.