Skip to content

Memory leak in MC Paramupmix with bitrate switching

Confirmed on 08510066 and also on 0fc9528d (older).

Steps to reproduce:

#!/bin/bash
git clone -b longer-testv-on-runners --single-branch https://forge.3gpp.org/rep/ivas-codec-pc/ivas-pc-testfiles.git
cp ivas-pc-testfiles/* scripts/testv/ # optional
make -j CLANG=2 # or use normally compiled binaries with valgrind (see below)
./IVAS_cod -mc 7_1_4 scripts/switchPaths/sw_24k4_256k.bin 48 scripts/testv/ltv48_MC714.wav mc.192
./IVAS_dec -FEC 5 STEREO 32 mc.192 /dev/null
ASAN log:
❯ ./IVAS_dec -FEC 5 STEREO 32 mc.192 mc.wav

==================================================================================================
 IVAS Codec Baseline
 
 Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,
 Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
==================================================================================================

Input bitstream file:   mc.192
Output synthesis file:  mc.wav

Output sampling rate:   32000 Hz
Bitrate:                24.40 kbps
Input configuration:    Multichannel 7.1+4 (CICP19)
Output configuration:   Stereo
FEC:                    5.00 %

------ Running the decoder ------

Frames processed:       8173    

Decoder+renderer delay: 3.25 ms   (104 samples at timescale 32000)

Decoding of 8173 frames finished

Limiter applied in 5 frames.

Clipping (saturation) detected: 2 samples clipped!!!



=================================================================
==802023==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 3328 byte(s) in 2 object(s) allocated from:
    #0 0x49bd5d in __interceptor_malloc /local/mnt/workspace/bcain_clang_hu-bcain-lv_8872/final/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0x6c7a3f in ivas_mc_paramupmix_dec_open /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mc_paramupmix_dec.c:619:55
    #2 0x6d5364 in ivas_mc_dec_reconfig /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:853:28
    #3 0x6d3322 in ivas_mc_dec_config /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:660:17
    #4 0x60e8ce in ivas_dec_setup /local/tmu/git/ivas-codec-clean/lib_dec/ivas_init_dec.c:498:13
    #5 0x5d3083 in ivas_dec /local/tmu/git/ivas-codec-clean/lib_dec/ivas_dec.c:90:24
    #6 0x4e6596 in IVAS_DEC_GetSamples /local/tmu/git/ivas-codec-clean/lib_dec/lib_dec.c:657:24
    #7 0x4de3ca in decodeG192 /local/tmu/git/ivas-codec-clean/apps/decoder.c:2072:24
    #8 0x4d28fd in main /local/tmu/git/ivas-codec-clean/apps/decoder.c:758:17
    #9 0x7f002f59bd09 in __libc_start_main csu/../csu/libc-start.c:308:16

Indirect leak of 20512 byte(s) in 16 object(s) allocated from:
    #0 0x49bd5d in __interceptor_malloc /local/mnt/workspace/bcain_clang_hu-bcain-lv_8872/final/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0xcfef7b in ivas_td_decorr_dec_open /local/tmu/git/ivas-codec-clean/lib_com/ivas_td_decorr.c:234:74
    #2 0x6c7df2 in ivas_mc_paramupmix_dec_open /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mc_paramupmix_dec.c:649:9
    #3 0x6d5364 in ivas_mc_dec_reconfig /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:853:28
    #4 0x6d3322 in ivas_mc_dec_config /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:660:17
    #5 0x60e8ce in ivas_dec_setup /local/tmu/git/ivas-codec-clean/lib_dec/ivas_init_dec.c:498:13
    #6 0x5d3083 in ivas_dec /local/tmu/git/ivas-codec-clean/lib_dec/ivas_dec.c:90:24
    #7 0x4e6596 in IVAS_DEC_GetSamples /local/tmu/git/ivas-codec-clean/lib_dec/lib_dec.c:657:24
    #8 0x4de3ca in decodeG192 /local/tmu/git/ivas-codec-clean/apps/decoder.c:2072:24
    #9 0x4d28fd in main /local/tmu/git/ivas-codec-clean/apps/decoder.c:758:17
    #10 0x7f002f59bd09 in __libc_start_main csu/../csu/libc-start.c:308:16

Indirect leak of 16576 byte(s) in 8 object(s) allocated from:
    #0 0x49bd5d in __interceptor_malloc /local/mnt/workspace/bcain_clang_hu-bcain-lv_8872/final/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0xcfec7b in ivas_td_decorr_dec_open /local/tmu/git/ivas-codec-clean/lib_com/ivas_td_decorr.c:215:55
    #2 0x6c7df2 in ivas_mc_paramupmix_dec_open /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mc_paramupmix_dec.c:649:9
    #3 0x6d5364 in ivas_mc_dec_reconfig /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:853:28
    #4 0x6d3322 in ivas_mc_dec_config /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:660:17
    #5 0x60e8ce in ivas_dec_setup /local/tmu/git/ivas-codec-clean/lib_dec/ivas_init_dec.c:498:13
    #6 0x5d3083 in ivas_dec /local/tmu/git/ivas-codec-clean/lib_dec/ivas_dec.c:90:24
    #7 0x4e6596 in IVAS_DEC_GetSamples /local/tmu/git/ivas-codec-clean/lib_dec/lib_dec.c:657:24
    #8 0x4de3ca in decodeG192 /local/tmu/git/ivas-codec-clean/apps/decoder.c:2072:24
    #9 0x4d28fd in main /local/tmu/git/ivas-codec-clean/apps/decoder.c:758:17
    #10 0x7f002f59bd09 in __libc_start_main csu/../csu/libc-start.c:308:16

Indirect leak of 10240 byte(s) in 16 object(s) allocated from:
    #0 0x49bd5d in __interceptor_malloc /local/mnt/workspace/bcain_clang_hu-bcain-lv_8872/final/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0x6c7e42 in ivas_mc_paramupmix_dec_open /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mc_paramupmix_dec.c:654:56
    #2 0x6d5364 in ivas_mc_dec_reconfig /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:853:28
    #3 0x6d3322 in ivas_mc_dec_config /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:660:17
    #4 0x60e8ce in ivas_dec_setup /local/tmu/git/ivas-codec-clean/lib_dec/ivas_init_dec.c:498:13
    #5 0x5d3083 in ivas_dec /local/tmu/git/ivas-codec-clean/lib_dec/ivas_dec.c:90:24
    #6 0x4e6596 in IVAS_DEC_GetSamples /local/tmu/git/ivas-codec-clean/lib_dec/lib_dec.c:657:24
    #7 0x4de3ca in decodeG192 /local/tmu/git/ivas-codec-clean/apps/decoder.c:2072:24
    #8 0x4d28fd in main /local/tmu/git/ivas-codec-clean/apps/decoder.c:758:17
    #9 0x7f002f59bd09 in __libc_start_main csu/../csu/libc-start.c:308:16

Indirect leak of 2048 byte(s) in 8 object(s) allocated from:
    #0 0x49bd5d in __interceptor_malloc /local/mnt/workspace/bcain_clang_hu-bcain-lv_8872/final/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0xcfece9 in ivas_td_decorr_dec_open /local/tmu/git/ivas-codec-clean/lib_com/ivas_td_decorr.c:220:54
    #2 0x6c7df2 in ivas_mc_paramupmix_dec_open /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mc_paramupmix_dec.c:649:9
    #3 0x6d5364 in ivas_mc_dec_reconfig /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:853:28
    #4 0x6d3322 in ivas_mc_dec_config /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:660:17
    #5 0x60e8ce in ivas_dec_setup /local/tmu/git/ivas-codec-clean/lib_dec/ivas_init_dec.c:498:13
    #6 0x5d3083 in ivas_dec /local/tmu/git/ivas-codec-clean/lib_dec/ivas_dec.c:90:24
    #7 0x4e6596 in IVAS_DEC_GetSamples /local/tmu/git/ivas-codec-clean/lib_dec/lib_dec.c:657:24
    #8 0x4de3ca in decodeG192 /local/tmu/git/ivas-codec-clean/apps/decoder.c:2072:24
    #9 0x4d28fd in main /local/tmu/git/ivas-codec-clean/apps/decoder.c:758:17
    #10 0x7f002f59bd09 in __libc_start_main csu/../csu/libc-start.c:308:16

Indirect leak of 1984 byte(s) in 8 object(s) allocated from:
    #0 0x49bd5d in __interceptor_malloc /local/mnt/workspace/bcain_clang_hu-bcain-lv_8872/final/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0xd06e58 in ivas_transient_det_open /local/tmu/git/ivas-codec-clean/lib_com/ivas_transient_det.c:174:50
    #2 0xcff0d7 in ivas_td_decorr_dec_open /local/tmu/git/ivas-codec-clean/lib_com/ivas_td_decorr.c:247:24
    #3 0x6c7df2 in ivas_mc_paramupmix_dec_open /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mc_paramupmix_dec.c:649:9
    #4 0x6d5364 in ivas_mc_dec_reconfig /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:853:28
    #5 0x6d3322 in ivas_mc_dec_config /local/tmu/git/ivas-codec-clean/lib_dec/ivas_mct_dec.c:660:17
    #6 0x60e8ce in ivas_dec_setup /local/tmu/git/ivas-codec-clean/lib_dec/ivas_init_dec.c:498:13
    #7 0x5d3083 in ivas_dec /local/tmu/git/ivas-codec-clean/lib_dec/ivas_dec.c:90:24
    #8 0x4e6596 in IVAS_DEC_GetSamples /local/tmu/git/ivas-codec-clean/lib_dec/lib_dec.c:657:24
    #9 0x4de3ca in decodeG192 /local/tmu/git/ivas-codec-clean/apps/decoder.c:2072:24
    #10 0x4d28fd in main /local/tmu/git/ivas-codec-clean/apps/decoder.c:758:17
    #11 0x7f002f59bd09 in __libc_start_main csu/../csu/libc-start.c:308:16

SUMMARY: AddressSanitizer: 54688 byte(s) leaked in 58 allocation(s).

Valgrind command and log:

valgrind --leak-check=full --track-origins=yes --show-leak-kinds=all --verbose --log-file=mc.txt ./IVAS_dec -FEC 5 STEREO 32 mc.192 /dev/null

mc_valgrind.txt