Memory leak in MC Paramupmix with bitrate switching
Confirmed on 08510066 and also on 0fc9528d (older). Steps to reproduce: ```bash #!/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 ``` <details><summary>ASAN log:</summary> ```bash ❯ ./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). ``` </details> Valgrind command and log: ```bash 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](/uploads/aa27b83fa8116a37471bfd4c2ebade09/mc_valgrind.txt)
issue