Skip to content

Segfault in decoding MC to mono/stereo with BR switching and FER when MC_PARAMUPMIX_MODE is active

Basic info

Bug description

Clang msan sanitizer test in pipeline found an error:

==223762==ERROR: MemorySanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000009f52a0 bp 0x7ffd73d88e90 sp 0x7ffd73d83d90 T223762)
==223762==The signal is caused by a READ memory access.
==223762==Hint: address points to the zero page.
    #0 0x9f529f in ivas_ls_setup_conversion_process_mdct /local/knj/ivas-codec2/lib_dec/ivas_out_setup_conversion.c
    #1 0x9911ce in ivas_mct_dec /local/knj/ivas-codec2/lib_dec/ivas_mct_dec.c:196:9
    #2 0x726bcb in ivas_dec /local/knj/ivas-codec2/lib_dec/ivas_dec.c:477:28
    #3 0x4cd40b in IVAS_DEC_GetSamples /local/knj/ivas-codec2/lib_dec/lib_dec.c:733:24
    #4 0x4b4e37 in decodeG192 /local/knj/ivas-codec2/apps/decoder.c:1624:24
    #5 0x49eb61 in main /local/knj/ivas-codec2/apps/decoder.c:585:17
    #6 0x7fa8e4c09d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
    #7 0x41f5a9 in _start (/local/knj/ivas-codec2/IVAS_dec+0x41f5a9)

MemorySanitizer can not provide additional info.
SUMMARY: MemorySanitizer: SEGV /local/knj/ivas-codec2/lib_dec/ivas_out_setup_conversion.c in ivas_ls_setup_conversion_process_mdct
==223762==ABORTING

May not be strictly a sanitizer error, but I did not check without.

The error does not occur when disabling MC_PARAMUPMIX_MODE in lib_com/options.h.

Link to test pipeline: https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/jobs/84633

Ways to reproduce

Error pattern is here: https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/jobs/84633/artifacts/file/ep_015.g192

Using the scripts:

python3 scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m MC_7_1_4_ball_fb_rs -p /path/to/my/local/ci_linux_ltv_local.json --oc mono stereo -f ep_015.g192

or directly:

make clean
make -j CLANG=1
./IVAS_cod -mc 7_1_4 -max_band fb ./scripts/switchPaths/sw_13k2_512k.bin 48 ltv48_MC714.wav bit
eid-xor -vbr -fer bit ep_015.g192 bit_fer
./IVAS_dec stereo 48 bit_fer out.wav