USAN: division by zero in DFt-Stereo DTX with frameloss
Git SHA: 4d1583db
Running the self_test_ltv.prm file with USAN build, this new error was reported:
lib_dec/ivas_stereo_dft_dec.c:2960:112: runtime error: division by zero
SUMMARY: UndefinedBehaviorSanitizer: float-divide-by-zero lib_dec/ivas_stereo_dft_dec.c:2960:112 in
Reproduce with:
make clean
make -j CLANG=3
./IVAS_cod -stereo -dtx 13200 16 ltv16_STEREO.wav bit
eid-xor -fer -vbr bit scripts/dly_error_profiles/ep_5pct.g192 bit_err
./IVAS_dec stereo 16 bit_err out.wav
The error happens in ivas_stereo_dft_dec.c:2960
:
if ( hStereoDft->frame_sid_nodata )
{
/* set new xfade target if new itd received */
if ( hStereoDft->gipd[k + k_offset] != hStereoDft->ipd_xfade_target )
{
if ( ( hStereoDft->gipd[k + k_offset] - hStereoDft->ipd_xfade_prev ) > EVS_PI )
{
hStereoDft->ipd_xfade_target = hStereoDft->gipd[k + k_offset] - 2 * EVS_PI;
hStereoDft->ipd_xfade_step = ( hStereoDft->ipd_xfade_target - hStereoDft->ipd_xfade_prev ) / ( STEREO_DFT_ITD_CNG_XFADE - hStereoDft->ipd_xfade_counter );
}
else if ( ( hStereoDft->ipd_xfade_prev - hStereoDft->gipd[k + k_offset] ) > EVS_PI )
{
hStereoDft->ipd_xfade_target = hStereoDft->gipd[k + k_offset] + 2 * EVS_PI;
hStereoDft->ipd_xfade_step = ( hStereoDft->ipd_xfade_target - hStereoDft->ipd_xfade_prev ) / ( STEREO_DFT_ITD_CNG_XFADE - hStereoDft->ipd_xfade_counter ); // <---------- faulty line
}
On the affected line, hStereoDft->ipd_xfade_counter
is 100
, which is the same as STEREO_DFT_ITD_CNG_XFADE
causing the zero in the denominator here.