[FFmpeg-trac] #2095(avcodec:new): memleak in aac decoder

FFmpeg trac at avcodec.org
Tue Jan 1 22:55:30 CET 2013


#2095: memleak in aac decoder
--------------------------------------+----------------------------------
               Reporter:  cehoyos     |                  Owner:
                   Type:  defect      |                 Status:  new
               Priority:  normal      |              Component:  avcodec
                Version:  git-master  |               Keywords:  aac leak
             Blocked By:              |               Blocking:
Reproduced by developer:  0           |  Analyzed by developer:  0
--------------------------------------+----------------------------------
 I can reproduce a memleak in the AAC decoder with the sample and command
 line from ticket #2088:
 {{{
 $ valgrind --leak-check=full ./ffmpeg_g -acodec aac -i dvdsub.vob -vn -f
 null -
 ==7301== Memcheck, a memory error detector
 ==7301== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
 ==7301== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
 ==7301== Command: ffmpeg_g -acodec aac -i dvdsub.vob -vn -f null -
 ==7301==
 ffmpeg version N-48385-g5ed5e90 Copyright (c) 2000-2013 the FFmpeg
 developers
   built on Jan  1 2013 21:30:44 with gcc 4.7 (SUSE Linux)
   configuration: --enable-gpl --disable-indev=jack
   libavutil      52. 13.100 / 52. 13.100
   libavcodec     54. 85.100 / 54. 85.100
   libavformat    54. 59.100 / 54. 59.100
   libavdevice    54.  3.102 / 54.  3.102
   libavfilter     3. 30.102 /  3. 30.102
   libswscale      2.  1.103 /  2.  1.103
   libswresample   0. 17.102 /  0. 17.102
   libpostproc    52.  2.100 / 52.  2.100
 [aac @ 0x69b9700] get_buffer() failed
 [aac @ 0x69b9700] More than one AAC RDB per ADTS frame is not implemented.
 Update your FFmpeg version to the newest one from Git. If the problem
 still occurs, it means that your file has a feature which has not been
 implemented.
 [aac @ 0x69b9700] get_buffer() failed
     Last message repeated 1 times
 [aac @ 0x69b9700] channel element 2.0 is not allocated
 [aac @ 0x69b9700] Number of bands (60) exceeds limit (40).
 [aac @ 0x69b9700] channel element 2.15 is not allocated
 [aac @ 0x69b9700] channel element 1.12 is not allocated
 [aac @ 0x69b9700] channel element 3.14 is not allocated
 [aac @ 0x69b9700] skip_data_stream_element: Input buffer exhausted before
 END element found
 [aac @ 0x69b9700] channel element 1.7 is not allocated
 [aac @ 0x69b9700] channel element 2.1 is not allocated
 [aac @ 0x69b9700] channel element 1.6 is not allocated
 [aac @ 0x69b9700] channel element 1.3 is not allocated
 [aac @ 0x69b9700] channel element 2.7 is not allocated
 [aac @ 0x69b9700] channel element 3.9 is not allocated
 [aac @ 0x69b9700] Reserved bit set.
     Last message repeated 1 times
 [aac @ 0x69b9700] Sample rate index in program config element does not
 match the sample rate index configured by the container.
     Last message repeated 1 times
 [aac @ 0x69b9700] Not evaluating a further program_config_element as this
 construct is dubious at best.
 [aac @ 0x69b9700] Prediction is not allowed in AAC-LC.
 [aac @ 0x69b9700] channel element 3.12 is not allocated
 [aac @ 0x69b9700] channel element 2.6 is not allocated
 [aac @ 0x69b9700] channel element 1.8 is not allocated
 [mpeg @ 0x66c6e40] max_analyze_duration 5000000 reached at 5000000
 Input #0, mpeg, from 'dvdsub.vob':
   Duration: 00:00:07.97, start: 1556.319267, bitrate: 5263 kb/s
     Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [SAR
 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
     Stream #0:1[0x80]: Audio: aac, 24000 Hz, mono, fltp, 360 kb/s
     Stream #0:2[0x20]: Subtitle: dvd_subtitle
     Stream #0:3[0x22]: Subtitle: dvd_subtitle
     Stream #0:4[0x24]: Subtitle: dvd_subtitle
     Stream #0:5[0x25]: Subtitle: dvd_subtitle
     Stream #0:6[0x26]: Subtitle: dvd_subtitle
     Stream #0:7[0x28]: Subtitle: dvd_subtitle
     Stream #0:8[0x29]: Subtitle: dvd_subtitle
     Stream #0:9[0x21]: Subtitle: dvd_subtitle
     Stream #0:10[0x23]: Subtitle: dvd_subtitle
     Stream #0:11[0x27]: Subtitle: dvd_subtitle
     Stream #0:12[0x2a]: Subtitle: dvd_subtitle
 Output #0, null, to 'pipe:':
   Metadata:
     encoder         : Lavf54.59.100
     Stream #0:0: Audio: pcm_s16le, 24000 Hz, mono, s16, 384 kb/s
 Stream mapping:
   Stream #0:1 -> #0:0 (aac -> pcm_s16le)
 Press [q] to stop, [?] for help
 [aac @ 0x69b9700] Sample rate index in program config element does not
 match the sample rate index configured by the container.
 [aac @ 0x69b9700] channel element 3.4 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] More than one AAC RDB per ADTS frame is not implemented.
 Update your FFmpeg version to the newest one from Git. If the problem
 still occurs, it means that your file has a feature which has not been
 implemented.
 [aac @ 0x69b9700] channel element 3.11 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Dependent coupling is not supported together with LTP
     Last message repeated 11 times
 Multiple frames in a packet from stream 1
 [aac @ 0x69b9700] channel element 0.5 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.0 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Number of bands (60) exceeds limit (40).
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.15 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 1.12 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 3.14 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] skip_data_stream_element: Input buffer exhausted before
 END element found
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 1.7 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.1 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Prediction is not allowed in AAC-LC.
 Error while decoding stream #0:1: Invalid data found when processing input
 [aac @ 0x69b9700] Number of bands (46) exceeds limit (44).
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.7 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 3.9 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Reserved bit set.
 Error while decoding stream #0:1: Invalid data found when processing input
 [aac @ 0x69b9700] Reserved bit set.
 Error while decoding stream #0:1: Invalid data found when processing input
 [aac @ 0x69b9700] Sample rate index in program config element does not
 match the sample rate index configured by the container.
     Last message repeated 1 times
 [aac @ 0x69b9700] Not evaluating a further program_config_element as this
 construct is dubious at best.
 [aac @ 0x69b9700] Prediction is not allowed in AAC-LC.
 Error while decoding stream #0:1: Invalid data found when processing input
 [aac @ 0x69b9700] channel element 3.12 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.6 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 1.8 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Dependent coupling is not supported together with LTP
     Last message repeated 35 times
 [aac @ 0x69b9700] channel element 2.14 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Dependent coupling is not supported together with LTP
     Last message repeated 11 times
 [aac @ 0x69b9700] Number of bands (61) exceeds limit (45).
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 3.2 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Reserved bit set.
 Error while decoding stream #0:1: Invalid data found when processing input
 [aac @ 0x69b9700] channel element 3.6 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Reserved bit set.
 Error while decoding stream #0:1: Invalid data found when processing input
 [aac @ 0x69b9700] channel element 2.9 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.4 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 1.10 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 2.2 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 1.8 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Sample rate index in program config element does not
 match the sample rate index configured by the container.
 [aac @ 0x69b9700] Number of bands (4) exceeds limit (3).
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] Number of bands (43) exceeds limit (23).
 Error while decoding stream #0:1: Operation not permitted
 [aac @ 0x69b9700] channel element 3.13 is not allocated
 Error while decoding stream #0:1: Operation not permitted
 size=N/A time=00:00:04.07 bitrate=N/A
 video:0kB audio:2kB subtitle:0 global headers:0kB muxing overhead
 -101.074219%
 ==7301==
 ==7301== HEAP SUMMARY:
 ==7301==     in use at exit: 4,008 bytes in 16 blocks
 ==7301==   total heap usage: 4,168 allocs, 4,152 frees, 45,004,678 bytes
 allocated
 ==7301==
 ==7301== 168 bytes in 1 blocks are definitely lost in loss record 1 of 4
 ==7301==    at 0x4C290FE: memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0xBB8031: av_mallocz (mem.c:92)
 ==7301==    by 0x99AB05: avcodec_fill_audio_frame (utils.c:322)
 ==7301==    by 0x99AE64: avcodec_default_get_buffer (utils.c:360)
 ==7301==    by 0xA84A7E: output_configure (aacdec.c:189)
 ==7301==    by 0xA86F40: aac_decode_frame_int (aacdec.c:2548)
 ==7301==    by 0xA884A2: aac_decode_frame (aacdec.c:2670)
 ==7301==    by 0x99DD4E: avcodec_decode_audio4 (utils.c:1743)
 ==7301==    by 0x595173: try_decode_frame (utils.c:2482)
 ==7301==    by 0x59C755: avformat_find_stream_info (utils.c:2889)
 ==7301==    by 0x454C80: open_input_file (ffmpeg_opt.c:794)
 ==7301==
 ==7301== 504 bytes in 3 blocks are definitely lost in loss record 2 of 4
 ==7301==    at 0x4C290FE: memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0xBB8031: av_mallocz (mem.c:92)
 ==7301==    by 0x99AB05: avcodec_fill_audio_frame (utils.c:322)
 ==7301==    by 0x99AE64: avcodec_default_get_buffer (utils.c:360)
 ==7301==    by 0xA85EF3: aac_decode_frame_int (aacdec.c:189)
 ==7301==    by 0xA884A2: aac_decode_frame (aacdec.c:2670)
 ==7301==    by 0x99DD4E: avcodec_decode_audio4 (utils.c:1743)
 ==7301==    by 0x595173: try_decode_frame (utils.c:2482)
 ==7301==    by 0x59C755: avformat_find_stream_info (utils.c:2889)
 ==7301==    by 0x454C80: open_input_file (ffmpeg_opt.c:794)
 ==7301==    by 0x45349F: open_files.isra.6 (ffmpeg_opt.c:2295)
 ==7301==
 ==7301== 1,128 bytes in 4 blocks are definitely lost in loss record 3 of 4
 ==7301==    at 0x4C290FE: memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0xBB8031: av_mallocz (mem.c:92)
 ==7301==    by 0x99AB05: avcodec_fill_audio_frame (utils.c:322)
 ==7301==    by 0x99AE64: avcodec_default_get_buffer (utils.c:360)
 ==7301==    by 0xA84A7E: output_configure (aacdec.c:189)
 ==7301==    by 0xA86F40: aac_decode_frame_int (aacdec.c:2548)
 ==7301==    by 0xA884A2: aac_decode_frame (aacdec.c:2670)
 ==7301==    by 0x99DD4E: avcodec_decode_audio4 (utils.c:1743)
 ==7301==    by 0x45F8EC: decode_audio (ffmpeg.c:1467)
 ==7301==    by 0x4622B5: process_input (ffmpeg.c:1787)
 ==7301==    by 0x45194F: main (ffmpeg.c:2980)
 ==7301==
 ==7301== 2,208 bytes in 8 blocks are definitely lost in loss record 4 of 4
 ==7301==    at 0x4C290FE: memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==7301==    by 0xBB8031: av_mallocz (mem.c:92)
 ==7301==    by 0x99AB05: avcodec_fill_audio_frame (utils.c:322)
 ==7301==    by 0x99AE64: avcodec_default_get_buffer (utils.c:360)
 ==7301==    by 0xA85EF3: aac_decode_frame_int (aacdec.c:189)
 ==7301==    by 0xA884A2: aac_decode_frame (aacdec.c:2670)
 ==7301==    by 0x99DD4E: avcodec_decode_audio4 (utils.c:1743)
 ==7301==    by 0x45F8EC: decode_audio (ffmpeg.c:1467)
 ==7301==    by 0x4622B5: process_input (ffmpeg.c:1787)
 ==7301==    by 0x45194F: main (ffmpeg.c:2980)
 ==7301==
 ==7301== LEAK SUMMARY:
 ==7301==    definitely lost: 4,008 bytes in 16 blocks
 ==7301==    indirectly lost: 0 bytes in 0 blocks
 ==7301==      possibly lost: 0 bytes in 0 blocks
 ==7301==    still reachable: 0 bytes in 0 blocks
 ==7301==         suppressed: 0 bytes in 0 blocks
 ==7301==
 ==7301== For counts of detected and suppressed errors, rerun with: -v
 ==7301== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 2 from 2)
 }}}

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


More information about the FFmpeg-trac mailing list