[opus] [Re:] Re: Opus 1.2.1 crash on silk/VAD.c:315

Jean-Marc Valin jmvalin at jmvalin.ca
Thu Sep 27 10:00:38 UTC 2018


Great, the problem should now be fixed in master then. Can you confirm?

Thanks for reporting this,

	Jean-Marc

On 09/27/2018 03:48 AM, Малинин Дмитрий wrote:
> Hi Jean-Marc,
> 
> gdb out is "Program terminated with signal 8, Arithmetic exception."
> most likely this division by zero.
> 
> you're right, this crash is reproduce on seq number 4294967265 (20ms rtp
> packet).
> This is about 994 days.
> 
> "Jean-Marc Valin" <jmvalin at jmvalin.ca> писал(а):
> 
>     Hi Dmitry,
> 
>     So it's not explicitly in your report, but it looks like the crash is
>     due to a divide-by-zero at:
>     min_coef = silk_DIV32_16( silk_int16_MAX, silk_RSHIFT(
>     psSilk_VAD->counter, 4 ) + 1 );
> 
>     which happens because counter is -16 (which means (-16 >> 4) + 1 == 0).
>     Now, this could be caused by an integer wrap-around, but it should only
>     happen after encoding around 2 years and 9 months of audio (1 year and 4
>     months for 10-ms frames). If that's really what you were doing, then it
>     should just be a matter of not incrementing the counter forever. OTOH,
>     if this is happening on a short clip, then it means some other
>     corruption is going on. Can you confirm which it is?
> 
>     Cheers,
> 
>     Jean-Marc
> 
> 
> 
>     On 09/21/2018 08:36 AM, Малинин Дмитрий wrote:
>     > Stack:
>     > (gdb) bt
>     > #0  0x0000000000aaf38a in silk_VAD_GetNoiseLevels
>     > (pX=pX at entry=0x7f26740297a0,
>     >     psSilk_VAD=psSilk_VAD at entry=0x15897c38) at silk/VAD.c:315
>     > #1  0x0000000000aa4a9d in silk_VAD_GetSA_Q8_sse4_1 (psEncC=0x15897c18,
>     > pIn=<optimized out>) at silk/x86/VAD_sse.c:177
>     > #2  0x0000000000a9f92b in silk_encode_do_VAD_FLP
>     > (psEnc=psEnc at entry=0x15897c18) at silk/float/encode_frame_FLP.c:51
>     > #3  0x0000000000a9a40c in silk_Encode
>     > (encState=encState at entry=0x15897c18,
>     encControl=encControl at entry=0x158935a8,
>     >     samplesIn=0x7f267402a8a8, samplesIn at entry=0x7f267402a128,
>     > nSamplesIn=0, nSamplesIn at entry=960,
>     >     psRangeEnc=psRangeEnc at entry=0x7f267402bbe0,
>     > nBytesOut=nBytesOut at entry=0x7f267402bb9c, prefillFlag=0)
>     >     at silk/enc_API.c:443
>     > #4  0x0000000000a8366d in opus_encode_native (st=st at entry=0x158935a0,
>     > pcm=0x7f267402bf38, frame_size=960,
>     >     data=0x7f26b5a1084d "", data at entry=0x7f26b5a1084c "",
>     > out_data_bytes=1946331320, out_data_bytes at entry=5988,
>     >     lsb_depth=1065353216, lsb_depth at entry=16,
>     > analysis_pcm=analysis_pcm at entry=0x7f26b5a1084c,
>     >     analysis_size=analysis_size at entry=960, c1=c1 at entry=0,
>     > c2=c2 at entry=-2, analysis_channels=1,
>     >     downmix=downmix at entry=0xa80fe0 <downmix_int>,
>     > float_api=float_api at entry=0) at src/opus_encoder.c:1826
>     > #5  0x0000000000a85211 in opus_encode (st=0x158935a0,
>     > pcm=0x7f26b5a1084c, analysis_frame_size=960,
>     >     data=0x7f26b5a1084c "", max_data_bytes=5988) at
>     src/opus_encoder.c:2227
>     > #6  0x00000000004ce892 in opus_encoder::transcode (this=0x21a30200,
>     > in_packet=0x7f267402cf30)
>     >     at
>     >
>     /root/mediagateway/source/engine/media-objects/transcoder/codecs/opus.h:91
>     >
>     > (gdb) frame 0
>     > #0  0x0000000000aaf38a in silk_VAD_GetNoiseLevels
>     > (pX=pX at entry=0x7f26740297a0,
>     >     psSilk_VAD=psSilk_VAD at entry=0x15897c38) at silk/VAD.c:315
>     > 315        min_coef = silk_DIV32_16( silk_int16_MAX, silk_RSHIFT(
>     > psSilk_VAD->counter, 4 ) + 1 );
>     >
>     > (gdb) p *psSilk_VAD
>     > $20 = {AnaState = {0, 0}, AnaState1 = {0, 0}, AnaState2 = {0, 0},
>     > XnrgSubfr = {0, 0, 0, 0}, NrgRatioSmth_Q8 = {
>     >     25600, 25600, 25600, 25600}, HPstate = 0, NL = {50, 25, 16, 12},
>     > inv_NL = {42949656, 85899327, 134217709,
>     >     178956950}, NoiseLevelBias = {50, 25, 16, 12}, counter = -16}
>     >
>     >
>     > OS: Linux debian-build 3.2.0-4-amd64 #1 SMP Debian 3.2.93-1 x86_64
>     GNU/Linux
>     > gcc (Debian 4.7.2-5) 4.7.2
>     >
>     > Regards,
>     > --
>     > Dmitry Malinin
>     > ITooLabs
>     >
>     >
>     >
>     > _______________________________________________
>     > opus mailing list
>     > opus at xiph.org
>     > http://lists.xiph.org/mailman/listinfo/opus
>     >
> 
> 
> Regards,
> -- 
> Dmitry Malinin
> ITooLabs
> 


More information about the opus mailing list