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