Skip to content

MSAN: use-of-uninitialized-value in MASA DTX encoding

Basic info

Bug description

MSAN found an error:

==3019==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x2fcb027 in L_shr /ivas-basop/lib_basop/basop32.c:2463:18
    #1 0x2fcf7a6 in L_shr_r /ivas-basop/lib_basop/basop32.c:2902:21
    #2 0x19b3812 in stereo_dft_cng_side_gain_fx /ivas-basop/lib_enc/ivas_stereo_cng_enc_fx.c:485:77
    #3 0x188e2d8 in ivas_cpe_enc_fx /ivas-basop/lib_enc/ivas_cpe_enc_fx.c:1142:17
    #4 0x72299b in ivas_enc_fx /ivas-basop/lib_enc/ivas_enc_fx.c:284:13
    #5 0x4dfbd4 in IVAS_ENC_EncodeFrameToSerial /ivas-basop/lib_enc/lib_enc_fx.c:1502:13
    #6 0x4ab61c in main /ivas-basop/apps/encoder.c:877:28
    #7 0x7fac76223d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #8 0x7fac76223e3f in __libc_start_main csu/../csu/libc-start.c:392:3
    #9 0x420364 in _start (/ivas-basop/IVAS_cod+0x420364)

  Uninitialized value was stored to memory at
    #0 0x2fcabcd in L_shr /ivas-basop/lib_basop/basop32.c:2442
    #1 0x2fcf7a6 in L_shr_r /ivas-basop/lib_basop/basop32.c:2902:21
    #2 0x19b3812 in stereo_dft_cng_side_gain_fx /ivas-basop/lib_enc/ivas_stereo_cng_enc_fx.c:485:77
    #3 0x188e2d8 in ivas_cpe_enc_fx /ivas-basop/lib_enc/ivas_cpe_enc_fx.c:1142:17
    #4 0x72299b in ivas_enc_fx /ivas-basop/lib_enc/ivas_enc_fx.c:284:13
    #5 0x4dfbd4 in IVAS_ENC_EncodeFrameToSerial /ivas-basop/lib_enc/lib_enc_fx.c:1502:13
    #6 0x4ab61c in main /ivas-basop/apps/encoder.c:877:28
    #7 0x7fac76223d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was stored to memory at
    #0 0x2fcf60d in L_shr_r /ivas-basop/lib_basop/basop32.c:2893
    #1 0x19b3812 in stereo_dft_cng_side_gain_fx /ivas-basop/lib_enc/ivas_stereo_cng_enc_fx.c:485:77
    #2 0x188e2d8 in ivas_cpe_enc_fx /ivas-basop/lib_enc/ivas_cpe_enc_fx.c:1142:17
    #3 0x72299b in ivas_enc_fx /ivas-basop/lib_enc/ivas_enc_fx.c:284:13
    #4 0x4dfbd4 in IVAS_ENC_EncodeFrameToSerial /ivas-basop/lib_enc/lib_enc_fx.c:1502:13
    #5 0x4ab61c in main /ivas-basop/apps/encoder.c:877:28
    #6 0x7fac76223d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

  Uninitialized value was created by a heap allocation
    #0 0x44ef2d in __interceptor_malloc (/ivas-basop/IVAS_cod+0x44ef2d)
    #1 0x19be618 in stereo_dft_enc_create_fx /ivas-basop/lib_enc/ivas_stereo_dft_enc_fx.c:371:5
    #2 0x1b915f6 in stereo_memory_enc_fx /ivas-basop/lib_enc/ivas_stereo_switching_enc_fx.c:287:13
    #3 0x186a4ec in ivas_cpe_enc_fx /ivas-basop/lib_enc/ivas_cpe_enc_fx.c:376:5
    #4 0x72299b in ivas_enc_fx /ivas-basop/lib_enc/ivas_enc_fx.c:284:13
    #5 0x4dfbd4 in IVAS_ENC_EncodeFrameToSerial /ivas-basop/lib_enc/lib_enc_fx.c:1502:13
    #6 0x4ab61c in main /ivas-basop/apps/encoder.c:877:28
    #7 0x7fac76223d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Ways to reproduce

./IVAS_cod -dtx -masa 2 /ltv/ltv48_MASA2TC.met scripts/switchPaths/sw_13k2_512k.bin 48 /ltv/ltv48_MASA2TC.wav bit

Occurs in frame 43 at the loop

/* Inactive frame => Update both sets of averages */
FOR( b = 0; b < nbands_full; b++ )
{
    // hStereoCng->sg_average[b] += hStereoDft->sidSideGain[b];
    hStereoCng->sg_average_fx[b] = L_add( hStereoCng->sg_average_fx[b], L_shr_r( hStereoDft->sidSideGain_fx[b], 5 ) );
    move32();
}

for b == 6, where hStereoDft->sidSideGain_fx[b] seems to be uninitialized.

Edited by multrus