New submission from Carl Eugen Hoyos <[email protected]>:

Suggested by Reimar in issue 2126.

Using the sample from issue 1951:
$ valgrind --leak-check=full ffmpeg_g -i sample.mkv
==20147== Memcheck, a memory error detector
==20147== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==20147== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==20147== Command: ffmpeg_g -i sample.mkv
==20147==
FFmpeg version SVN-r25283, Copyright (c) 2000-2010 the FFmpeg developers
  built on Oct  1 2010 15:38:39 with gcc 4.4.4
  configuration: --cc='/usr/local/gcc-4.4.4/bin/gcc -m32' 
--disable-optimizations
  libavutil     50.32. 0 / 50.32. 0
  libavcore      0. 9. 0 /  0. 9. 0
  libavcodec    52.92. 0 / 52.92. 0
  libavformat   52.79. 0 / 52.79. 0
  libavdevice   52. 2. 2 / 52. 2. 2
  libavfilter    1.48. 0 /  1.48. 0
  libswscale     0.12. 0 /  0.12. 0
[matroska,webm @ 0x4fc4760] Too many streams
issue1951/sample.mkv: Cannot allocate memory
==20147==
==20147== HEAP SUMMARY:
==20147==     in use at exit: 300,497 bytes in 205 blocks
==20147==   total heap usage: 383 allocs, 178 frees, 539,367 bytes allocated
==20147==
==20147== 18 bytes in 2 blocks are possibly lost in loss record 1 of 15
==20147==    at 0x4CA8E9E: memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x4CA8EFB: posix_memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E46: av_malloc (mem.c:83)
==20147==    by 0x8486F25: av_strdup (mem.c:170)
==20147==    by 0x80A1ADC: av_metadata_set2 (metadata.c:74)
==20147==    by 0x809B644: matroska_read_header (matroskadec.c:1406)
==20147==    by 0x8101671: av_open_input_stream (utils.c:452)
==20147==    by 0x8101B6A: av_open_input_file (utils.c:607)
==20147==    by 0x8054D6E: opt_input_file (ffmpeg.c:3174)
==20147==    by 0x805831E: parse_options (cmdutils.c:185)
==20147==    by 0x8057B5B: main (ffmpeg.c:4327)
==20147==
==20147== 72 bytes in 1 blocks are possibly lost in loss record 4 of 15
==20147==    at 0x4CA9D82: realloc (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E7E: av_realloc (mem.c:135)
==20147==    by 0x8098FC3: ebml_parse_elem (matroskadec.c:791)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==
==20147== 96 bytes in 4 blocks are possibly lost in loss record 6 of 15
==20147==    at 0x4CA8E9E: memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x4CA8EFB: posix_memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E46: av_malloc (mem.c:83)
==20147==    by 0x80989E8: ebml_read_ascii (matroskadec.c:638)
==20147==    by 0x80990D6: ebml_parse_elem (matroskadec.c:807)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==
==20147== 640 (320 direct, 320 indirect) bytes in 1 blocks are definitely lost
in loss record 11 of 15
==20147==    at 0x4CA9D82: realloc (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E7E: av_realloc (mem.c:135)
==20147==    by 0x8098FC3: ebml_parse_elem (matroskadec.c:791)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x809A333: matroska_execute_seekhead (matroskadec.c:1127)
==20147==    by 0x809A68C: matroska_read_header (matroskadec.c:1204)
==20147==    by 0x8101671: av_open_input_stream (utils.c:452)
==20147==
==20147== 780 (160 direct, 620 indirect) bytes in 20 blocks are definitely lost
in loss record 12 of 15
==20147==    at 0x4CA8E9E: memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x4CA8EFB: posix_memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E46: av_malloc (mem.c:83)
==20147==    by 0x8486ECE: av_mallocz (mem.c:159)
==20147==    by 0x80A19E7: av_metadata_set2 (metadata.c:55)
==20147==    by 0x809B644: matroska_read_header (matroskadec.c:1406)
==20147==    by 0x8101671: av_open_input_stream (utils.c:452)
==20147==    by 0x8101B6A: av_open_input_file (utils.c:607)
==20147==    by 0x8054D6E: opt_input_file (ffmpeg.c:3174)
==20147==    by 0x805831E: parse_options (cmdutils.c:185)
==20147==    by 0x8057B5B: main (ffmpeg.c:4327)
==20147==
==20147== 29,136 (6,208 direct, 22,928 indirect) bytes in 3 blocks are
definitely lost in loss record 14 of 15
==20147==    at 0x4CA9D82: realloc (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E7E: av_realloc (mem.c:135)
==20147==    by 0x8098FC3: ebml_parse_elem (matroskadec.c:791)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==
==20147== 269,755 bytes in 2 blocks are possibly lost in loss record 15 of 15
==20147==    at 0x4CA8E9E: memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x4CA8EFB: posix_memalign (in
/usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so)
==20147==    by 0x8486E46: av_malloc (mem.c:83)
==20147==    by 0x8098A65: ebml_read_binary (matroskadec.c:656)
==20147==    by 0x80990FA: ebml_parse_elem (matroskadec.c:808)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==    by 0x8099170: ebml_parse_elem (matroskadec.c:813)
==20147==    by 0x8098D8E: ebml_parse_id (matroskadec.c:739)
==20147==    by 0x8098E2E: ebml_parse (matroskadec.c:752)
==20147==    by 0x8098F4B: ebml_parse_nest (matroskadec.c:775)
==20147==
==20147== LEAK SUMMARY:
==20147==    definitely lost: 6,688 bytes in 24 blocks
==20147==    indirectly lost: 23,868 bytes in 172 blocks
==20147==      possibly lost: 269,941 bytes in 9 blocks
==20147==    still reachable: 0 bytes in 0 blocks
==20147==         suppressed: 0 bytes in 0 blocks
==20147==
==20147== For counts of detected and suppressed errors, rerun with: -v
==20147== ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 3 from 3)

----------
messages: 12096
priority: normal
status: open
substatus: open
title: libavformat leaks memory for files with too many streams
type: bug

________________________________________________
FFmpeg issue tracker <[email protected]>
<https://roundup.ffmpeg.org/issue2261>
________________________________________________

Reply via email to