Skip to content

MSAN: use-of-uninitiallized-value in computeDirectionAngles function for OSBA to BINAURAL + JBM and rate switching

Basic info

Bug description

Clang MSAN sanitizer test in pipeline found an error:

==3455==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x1199970 in computeDirectionAngles /ivas-codec/lib_rend/ivas_dirac_rend.c:1776:14
    #1 0x15b9841 in ivas_dirac_dec_render_sf /ivas-codec/lib_dec/ivas_dirac_dec.c:2021:13
    #2 0xd05c5b in ivas_spar_dec_upmixer_sf /ivas-codec/lib_dec/ivas_spar_decoder.c:1660:9
    #3 0xc933ad in ivas_sba_dec_render /ivas-codec/lib_dec/ivas_sba_dec.c:782:9
    #4 0x9ef7b0 in ivas_jbm_dec_render /ivas-codec/lib_dec/ivas_jbm_dec.c:1138:28
    #5 0x51c14e in IVAS_DEC_GetRenderedSamples /ivas-codec/lib_dec/lib_dec.c:2131:13
    #6 0x51a9e7 in IVAS_DEC_GetSamplesRenderer /ivas-codec/lib_dec/lib_dec.c:1725:24
    #7 0x543efb in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3694:28
    #8 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #9 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #10 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #11 0x7f5b151dae3f in __libc_start_main csu/../csu/libc-start.c:392:3
    #12 0x421534 in _start (/ivas-codec/CLANG1/IVAS_dec+0x421534)

  Uninitialized value was stored to memory at
    #0 0x124ff27 in ivas_td_decorr_APD_iir_filter /ivas-codec/lib_rend/ivas_td_decorr.c:417:21
    #1 0x1252758 in ivas_td_decorr_APD_sections /ivas-codec/lib_rend/ivas_td_decorr.c:449:9
    #2 0x125193d in ivas_td_decorr_process /ivas-codec/lib_rend/ivas_td_decorr.c:493:5
    #3 0xcf93d4 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1330:17
    #4 0xc8e648 in ivas_sba_dec_digest_tc /ivas-codec/lib_dec/ivas_sba_dec.c:672:9
    #5 0xa1d8da in ivas_dec_prepare_renderer /ivas-codec/lib_dec/ivas_jbm_dec.c:2900:13
    #6 0x517938 in IVAS_DEC_PrepareRenderer /ivas-codec/lib_dec/lib_dec.c:1604:5
    #7 0x543a5d in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3687:32
    #8 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #9 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #10 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was stored to memory at
    #0 0x1ffe825 in mvr2r /ivas-codec/lib_com/tools.c:337:18
    #1 0x125181b in ivas_td_decorr_process /ivas-codec/lib_rend/ivas_td_decorr.c:489:9
    #2 0xcf93d4 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1330:17
    #3 0xc8e648 in ivas_sba_dec_digest_tc /ivas-codec/lib_dec/ivas_sba_dec.c:672:9
    #4 0xa1d8da in ivas_dec_prepare_renderer /ivas-codec/lib_dec/ivas_jbm_dec.c:2900:13
    #5 0x517938 in IVAS_DEC_PrepareRenderer /ivas-codec/lib_dec/lib_dec.c:1604:5
    #6 0x543a5d in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3687:32
    #7 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #8 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #9 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was stored to memory at
    #0 0x1251476 in ivas_td_decorr_process /ivas-codec/lib_rend/ivas_td_decorr.c:483:29
    #1 0xcf93d4 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1330:17
    #2 0xc8e648 in ivas_sba_dec_digest_tc /ivas-codec/lib_dec/ivas_sba_dec.c:672:9
    #3 0xa1d8da in ivas_dec_prepare_renderer /ivas-codec/lib_dec/ivas_jbm_dec.c:2900:13
    #4 0x517938 in IVAS_DEC_PrepareRenderer /ivas-codec/lib_dec/lib_dec.c:1604:5
    #5 0x543a5d in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3687:32
    #6 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #7 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #8 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was stored to memory at
    #0 0x1ffe825 in mvr2r /ivas-codec/lib_com/tools.c:337:18
    #1 0x201b5bc in delay_signal /ivas-codec/lib_com/tools.c:1778:5
    #2 0x1250e24 in ivas_td_decorr_process /ivas-codec/lib_rend/ivas_td_decorr.c:474:5
    #3 0xcf93d4 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1330:17
    #4 0xc8e648 in ivas_sba_dec_digest_tc /ivas-codec/lib_dec/ivas_sba_dec.c:672:9
    #5 0xa1d8da in ivas_dec_prepare_renderer /ivas-codec/lib_dec/ivas_jbm_dec.c:2900:13
    #6 0x517938 in IVAS_DEC_PrepareRenderer /ivas-codec/lib_dec/lib_dec.c:1604:5
    #7 0x543a5d in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3687:32
    #8 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #9 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #10 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was stored to memory at
    #0 0x1ffe825 in mvr2r /ivas-codec/lib_com/tools.c:337:18
    #1 0x201b3d9 in delay_signal /ivas-codec/lib_com/tools.c:1775:5
    #2 0x1250e24 in ivas_td_decorr_process /ivas-codec/lib_rend/ivas_td_decorr.c:474:5
    #3 0xcf93d4 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1330:17
    #4 0xc8e648 in ivas_sba_dec_digest_tc /ivas-codec/lib_dec/ivas_sba_dec.c:672:9
    #5 0xa1d8da in ivas_dec_prepare_renderer /ivas-codec/lib_dec/ivas_jbm_dec.c:2900:13
    #6 0x517938 in IVAS_DEC_PrepareRenderer /ivas-codec/lib_dec/lib_dec.c:1604:5
    #7 0x543a5d in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3687:32
    #8 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #9 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #10 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was stored to memory at
    #0 0x1ffe4ae in mvr2r /ivas-codec/lib_com/tools.c:330:18
    #1 0x201b4ab in delay_signal /ivas-codec/lib_com/tools.c:1776:5
    #2 0x1250e24 in ivas_td_decorr_process /ivas-codec/lib_rend/ivas_td_decorr.c:474:5
    #3 0xcf93d4 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1330:17
    #4 0xc8e648 in ivas_sba_dec_digest_tc /ivas-codec/lib_dec/ivas_sba_dec.c:672:9
    #5 0xa1d8da in ivas_dec_prepare_renderer /ivas-codec/lib_dec/ivas_jbm_dec.c:2900:13
    #6 0x517938 in IVAS_DEC_PrepareRenderer /ivas-codec/lib_dec/lib_dec.c:1604:5
    #7 0x543a5d in IVAS_DEC_VoIP_GetSamples /ivas-codec/lib_dec/lib_dec.c:3687:32
    #8 0x4bdde8 in decodeVoIP /ivas-codec/apps/decoder.c:3368:28
    #9 0x4a7930 in main /ivas-codec/apps/decoder.c:779:17
    #10 0x7f5b151dad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was created by an allocation of 'pPcm_tmp' in the stack frame of function 'ivas_spar_dec_digest_tc'
    #0 0xcf79f0 in ivas_spar_dec_digest_tc /ivas-codec/lib_dec/ivas_spar_decoder.c:1291

SUMMARY: MemorySanitizer: use-of-uninitialized-value /ivas-codec/lib_rend/ivas_dirac_rend.c:1776:14 in computeDirectionAngles
Exiting

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

Ways to reproduce

pipeline artifacts:

sanitizer-test-osba-foa-ism2--main--sha-3d8045a9.zip

Activate origin-tracking (more detailed traceback about where the undefined value came from) by appending

 -fsanitize-memory-track-origins

in the Makefile at lines 71 and 72. Note that this may increase runtime heavily.

Using the scripts:

python3 scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m OSBA_ISM2_PlanarFOA_ball_swb_rs -p /path/to/my/local/ci_linux_ltv_local.json -J dly_profile.dat -D="-T ./head_rot.traj.csv -exof ./exof_traj.csv"

or directly:

make clean
make -j CLANG=1
./IVAS_cod -ism_sba 2 -1 NULL NULL -max_band swb scripts/switchPaths/sw_13k2_512k.bin 32 ltv32_OSBA_2ISM_FOA.wav bit
networkSimulator_g192 dly_profile.dat bit bit_err trace_dump 1
./IVAS_dec -Tracefile ltv48_OSBA_2ISM_FOA_OSBA_ISM2_PlanarFOA_ball_swb_rs_jbm_dly_profile_dat.dec.BINAURAL.wav.tracefile_dec -VOIP -T ./head_rot_traj.csv -exof ./exof_traj.csv BINAURAL 32 bit out.wav
Edited by Jan Kiene