Memory sanitizer error for Multichannel BR switching
Basic info
- Commit SHA: 2164800f
- Platform: Linux
Bug description
Sanitizer tests report msan errors for MC bitrate switching modes here: https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/pipelines/11908. There are some detected for 5_1_4 and 7_1_4 input, both seem to be about the same problem, see decoder printout below. The indicated position in lib_dec/ivas_dec.c:473:32
is inside the MC MASA branch.
./IVAS_dec 7_1_4 16 ./ltv48_MC714_MC_7_1_4_ball_wb_rs_fer_ep_015_g192.192 ./ltv48_MC714_MC_7_1_4_ball_wb_rs_fer_ep_015_g192.dec.7_1_4.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
==================================================================================================
==684496==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x17a291e in hp20 /local/knj/ivas-codec/lib_com/hp50.c:128:14
#1 0x6f7f18 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:526:17
#2 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#3 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#4 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#5 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
#6 0x41f5a9 in _start (/local/knj/ivas-codec/CLANG1/IVAS_dec+0x41f5a9)
Uninitialized value was stored to memory at
#0 0x1c69976 in mvr2r /local/knj/ivas-codec/lib_com/tools.c:335:18
#1 0x98119f in ivas_mdct_core_reconstruct /local/knj/ivas-codec/lib_dec/ivas_mdct_core_dec.c:909:13
#2 0xb68358 in stereo_mdct_core_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_mdct_core_dec.c:360:5
#3 0x12744ca in ivas_core_dec /local/knj/ivas-codec/lib_dec/ivas_core_dec.c:381:17
#4 0x128cd0e in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:368:24
#5 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#6 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#7 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#8 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#9 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
Uninitialized value was stored to memory at
#0 0x1140a9a in decoder_tcx_post /local/knj/ivas-codec/lib_dec/dec_tcx.c:223:28
#1 0x97e11a in ivas_mdct_core_reconstruct /local/knj/ivas-codec/lib_dec/ivas_mdct_core_dec.c:844:13
#2 0xb68358 in stereo_mdct_core_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_mdct_core_dec.c:360:5
#3 0x12744ca in ivas_core_dec /local/knj/ivas-codec/lib_dec/ivas_core_dec.c:381:17
#4 0x128cd0e in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:368:24
#5 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#6 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#7 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#8 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#9 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
Uninitialized value was stored to memory at
#0 0x1140b4e in decoder_tcx_post /local/knj/ivas-codec/lib_dec/dec_tcx.c:224:36
#1 0x97e11a in ivas_mdct_core_reconstruct /local/knj/ivas-codec/lib_dec/ivas_mdct_core_dec.c:844:13
#2 0xb68358 in stereo_mdct_core_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_mdct_core_dec.c:360:5
#3 0x12744ca in ivas_core_dec /local/knj/ivas-codec/lib_dec/ivas_core_dec.c:381:17
#4 0x128cd0e in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:368:24
#5 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#6 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#7 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#8 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#9 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
Uninitialized value was stored to memory at
#0 0x11406ab in decoder_tcx_post /local/knj/ivas-codec/lib_dec/dec_tcx.c:218:19
#1 0x97e11a in ivas_mdct_core_reconstruct /local/knj/ivas-codec/lib_dec/ivas_mdct_core_dec.c:844:13
#2 0xb68358 in stereo_mdct_core_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_mdct_core_dec.c:360:5
#3 0x12744ca in ivas_core_dec /local/knj/ivas-codec/lib_dec/ivas_core_dec.c:381:17
#4 0x128cd0e in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:368:24
#5 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#6 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#7 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#8 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#9 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
Uninitialized value was stored to memory at
#0 0x11404b2 in decoder_tcx_post /local/knj/ivas-codec/lib_dec/dec_tcx.c:216:14
#1 0x97e11a in ivas_mdct_core_reconstruct /local/knj/ivas-codec/lib_dec/ivas_mdct_core_dec.c:844:13
#2 0xb68358 in stereo_mdct_core_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_mdct_core_dec.c:360:5
#3 0x12744ca in ivas_core_dec /local/knj/ivas-codec/lib_dec/ivas_core_dec.c:381:17
#4 0x128cd0e in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:368:24
#5 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#6 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#7 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#8 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#9 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
Uninitialized value was stored to memory at
#0 0x113f908 in decoder_tcx_post /local/knj/ivas-codec/lib_dec/dec_tcx.c:193:21
#1 0x97e11a in ivas_mdct_core_reconstruct /local/knj/ivas-codec/lib_dec/ivas_mdct_core_dec.c:844:13
#2 0xb68358 in stereo_mdct_core_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_mdct_core_dec.c:360:5
#3 0x12744ca in ivas_core_dec /local/knj/ivas-codec/lib_dec/ivas_core_dec.c:381:17
#4 0x128cd0e in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:368:24
#5 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#6 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#7 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#8 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#9 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
Uninitialized value was created by a heap allocation
#0 0x42b36d in malloc /local1/bnd/llvm-8.0.1.src/projects/compiler-rt/lib/msan/msan_interceptors.cc:912:3
#1 0xba3cf8 in allocate_CoreCoder_TCX /local/knj/ivas-codec/lib_dec/ivas_stereo_switching_dec.c:59:47
#2 0xb977e6 in stereo_memory_dec /local/knj/ivas-codec/lib_dec/ivas_stereo_switching_dec.c:715:28
#3 0x12830e9 in ivas_cpe_dec /local/knj/ivas-codec/lib_dec/ivas_cpe_dec.c:107:20
#4 0x6f6440 in ivas_dec /local/knj/ivas-codec/lib_dec/ivas_dec.c:473:32
#5 0x4c772b in IVAS_DEC_GetSamples /local/knj/ivas-codec/lib_dec/lib_dec.c:743:24
#6 0x4afbed in decodeG192 /local/knj/ivas-codec/apps/decoder.c:1359:24
#7 0x49cd00 in main /local/knj/ivas-codec/apps/decoder.c:475:17
#8 0x7f54371c9d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
SUMMARY: MemorySanitizer: use-of-uninitialized-value /local/knj/ivas-codec/lib_com/hp50.c:128:14 in hp20
Exiting
Ways to reproduce
The above example is for wideband, but same thing is also reported for fullband. Mind that you have to pass -fsanitize-memory-track-origins
to clang (in the makefile) if you want to have the full printout as above.
Error pattern file is attached: ep_015.g192
# get testfiles if you don't have them already locally
git clone git@forge.3gpp.org:ivas-codec-pc/ivas-pc-testfiles.git
git checkout 2164800f4730d763fab34c56f27e06cfe1716741
make clean
make -j CLANG=1
./IVAS_cod -mc 5_1_4 -max_band fb ./scripts/switchPaths/sw_13k2_512k.bin 48 ivas-pc-testfiles/testv/ltv48_MC514.wav bit
eid-xor -vbr -fer bit ep_015.g192 bit_with_frame_errors
./IVAS_dec 5_1_4 48 bit_with_frame_errors out.wav
Edited by Jan Kiene