<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div dir="ltr" id="yui_3_16_0_1_1429210732892_23686"><span>Hi Suresh ,</span></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23687"><span><br></span></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23687">Can you reproduce this ?</div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23688"><span id="yui_3_16_0_1_1429210732892_23690">What are you using for transcoding ?</span></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23688"><span id="yui_3_16_0_1_1429210732892_23843">Perhaps the bug is in your transcoding software.</span></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23688"><span id="yui_3_16_0_1_1429210732892_23844">You can use wireshark to extract the contents of your RTP packets in a separate file.</span></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23688"><br></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23651"><span>Regards,</span></div><div dir="ltr" id="yui_3_16_0_1_1429210732892_23652"><span>Dragos&nbsp;</span></div><br>  <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1429210732892_23625"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1429210732892_23624"> <div dir="ltr" id="yui_3_16_0_1_1429210732892_23623"> <hr size="1">  <font size="2" face="Arial" id="yui_3_16_0_1_1429210732892_23626"> <b><span style="font-weight:bold;">From:</span></b> Suresh Thiriveedi &lt;sthiriveedi@gmail.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> Jean-Marc Valin &lt;jmvalin@jmvalin.ca&gt; <br><b><span style="font-weight: bold;">Cc:</span></b> opus@xiph.org <br> <b><span style="font-weight: bold;">Sent:</span></b> Thursday, April 16, 2015 2:32 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [opus] Availability of the 1.1.1 stable version<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_1_1429210732892_23656"><br><div id="yiv0654384112"><div id="yui_3_16_0_1_1429210732892_23655"><div dir="ltr" id="yui_3_16_0_1_1429210732892_23654"><div class="yiv0654384112gmail_default" style="color:#000000;" id="yui_3_16_0_1_1429210732892_23653">This is observed on a live call between webRTC browser client and another legacy client. Our server is there &nbsp;in between and transcoding from opus to another codec and this is observed while decoding the opus.</div><div class="yiv0654384112gmail_default" style="color:#000000;" id="yui_3_16_0_1_1429210732892_23657"><br clear="none"></div><div class="yiv0654384112gmail_default" style="color:#000000;" id="yui_3_16_0_1_1429210732892_23896">Anyway, I'll try to capture/dump the packets in the server before feeding to the opus_decode and share with you. But this will not have the first 8 bytes (length+enc range) to directly feed to the sample binary. Please let me know if this is fine.</div><div class="yiv0654384112gmail_default" style="color:#000000;" id="yui_3_16_0_1_1429210732892_23897"><br clear="none"></div><div class="yiv0654384112gmail_default" style="color:#000000;" id="yui_3_16_0_1_1429210732892_23898">Thanks</div><div class="yiv0654384112gmail_default" style="color:#000000;" id="yui_3_16_0_1_1429210732892_23899">Suresh</div></div><div class="yiv0654384112gmail_extra" id="yui_3_16_0_1_1429210732892_23666"><br clear="none"><div class="qtdSeparateBR"><br><br></div><div class="yiv0654384112yqt1762627306" id="yiv0654384112yqtfd09456"><div class="yiv0654384112gmail_quote" id="yui_3_16_0_1_1429210732892_23665">On 16 April 2015 at 17:36, Jean-Marc Valin <span dir="ltr">&lt;<a rel="nofollow" shape="rect" ymailto="mailto:jmvalin@jmvalin.ca" target="_blank" href="mailto:jmvalin@jmvalin.ca">jmvalin@jmvalin.ca</a>&gt;</span> wrote:<br clear="none"><blockquote class="yiv0654384112gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" id="yui_3_16_0_1_1429210732892_23664">Please provide the input file that produces this with opus_demo.<br clear="none">
<span class="yiv0654384112" id="yui_3_16_0_1_1429210732892_23900"><br clear="none">
On 16/04/15 03:24 AM, Suresh Thiriveedi wrote:<br clear="none">
&gt; Hi&nbsp; Jean-Marc,<br clear="none">
&gt;<br clear="none">
&gt; Could you please update if you got a chance to look into. As I<br clear="none">
&gt; mentioned, I don't see the same issue in 1.1.1, but I don't see any<br clear="none">
&gt; difference in 1.1.1 other than optimization based on the architecture.<br clear="none">
&gt; This optimization could have fixed some stack overflow issue in some<br clear="none">
&gt; specific cases?<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt; Thanks<br clear="none">
&gt; Suresh<br clear="none">
&gt;<br clear="none">
&gt; On 13 April 2015 at 12:39, Suresh Thiriveedi &lt;<a rel="nofollow" shape="rect" ymailto="mailto:sthiriveedi@gmail.com" target="_blank" href="mailto:sthiriveedi@gmail.com">sthiriveedi@gmail.com</a><br clear="none">
</span><span class="yiv0654384112">&gt; &lt;mailto:<a rel="nofollow" shape="rect" ymailto="mailto:sthiriveedi@gmail.com" target="_blank" href="mailto:sthiriveedi@gmail.com">sthiriveedi@gmail.com</a>&gt;&gt; wrote:<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;Hi Jean-Marc,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;Thanks for your response. Please find the details as below.<br clear="none">
&gt;<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;*_Backtrace we got for this crash:_*<br clear="none">
<div id="yui_3_16_0_1_1429210732892_23663"><div class="yiv0654384112h5" id="yui_3_16_0_1_1429210732892_23662">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;#0&nbsp; 0x0000000000800c54 in opus_decode_frame (st=0x38906b8f99d09c5,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data=0xf0aa10b4ef1008ae &lt;Address 0xf0aa10b4ef1008ae out of<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;bounds&gt;, len=-188613428, pcm=0x6e80016085efd57,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_size=44037315, decode_fec=58716895) at src/opus_decoder.c:384<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;#1&nbsp; 0x00000000008009c0 in opus_decode_frame (st=0x712357d0,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data=0x7effff9ab72d<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;"~▒`\\▒K\005▒▒y▒w+g~▒S2\025▒\036T▒\002x▒▒h!▒▒▒\220\233\066s▒\030#gb<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;\rn▒rF\005Q▒\213;▒`\207$O▒(m\222=9▒▒/h▒▒t▒▒E묳w▒\237\"\206z\005<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;\213»u@e", len=88, pcm=0x7effff9a6a80, frame_size=640, decode_fec=0)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;at src/opus_decoder.c:319<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;#2&nbsp; 0x0000000000801be1 in opus_decode_native (st=0x712357d0,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data=0x7effff9ab72d<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;"~▒`\\▒K\005▒▒y▒w+g~▒S2\025▒\036T▒\002x▒▒h!▒▒▒\220\233\066s▒\030#gb<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;\rn▒rF\005Q▒\213;▒`\207$O▒(m\222=9▒▒/h▒▒t▒▒E묳w▒\237\"\206z\005<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;\213»u@e", len=89, pcm=0x7effff9a6a80, frame_size=640, decode_fec=0,<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;self_delimited=0,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;packet_offset=0x0, soft_clip=1) at src/opus_decoder.c:681<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;#3&nbsp; 0x000000000080226c in opus_decode (st=0x712357d0,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data=0x7effff9ab72c<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;"▒~▒`\\▒K\005▒▒y▒w+g~▒S2\025▒\036T▒\002x▒▒h!▒▒▒\220\233\066s▒\030#gb<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;\rn▒rF\005Q▒\213;▒`\207$O▒(m\222=9▒▒/h▒▒t▒▒E묳w▒\237\"\206z\005<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;\213»u@e", len=89, pcm=0x71245a60, frame_size=640, decode_fec=0) at<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;src/opus_decoder.c:867<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;#4&nbsp; 0x00000000004fd6b5 in kn_opus_decode (decHandle=0x712357d0,<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;decProp=0x1675698, src=0x16756d0, dest=0x71245a60,<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dstLen=0x1673210) at MSTranscodeOPUS.c:100<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
</div></div>&gt;&nbsp; &nbsp; &nbsp;*_And the code flow what we have observed for this specific incident:_*<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;*_<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;_*<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;*_Called this as mode is CELT_ONLY,_*<br clear="none">
<span class="yiv0654384112">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (data!=NULL &amp;&amp; st-&gt;prev_mode &gt; 0 &amp;&amp; (<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (mode == MODE_CELT_ONLY &amp;&amp; st-&gt;prev_mode != MODE_CELT_ONLY &amp;&amp;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;!st-&gt;prev_redundancy)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|| (mode != MODE_CELT_ONLY &amp;&amp; st-&gt;prev_mode == MODE_CELT_ONLY) )<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; {<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_transition = 1_;<br clear="none">
<span class="yiv0654384112">&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* Decide where to allocate the stack memory for pcm_transition */<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (mode == MODE_CELT_ONLY)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcm_transition_celt_size = F5*st-&gt;channels;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcm_transition_silk_size = F5*st-&gt;channels;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br clear="none">
&gt;<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;*_So transition is made as 1 called this,_*<br clear="none">
<span class="yiv0654384112">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (transition &amp;&amp; mode == MODE_CELT_ONLY)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; {<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pcm_transition = pcm_transition_celt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;opus_decode_frame(st, NULL, 0, pcm_transition, IMIN(F5,<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;audiosize), 0);<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br clear="none">
&gt;<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;*_In "opus_decode_frame" again, as data is passed as NULL, goes to<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;else part_*<br clear="none">
<span class="yiv0654384112">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (data != NULL)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; {<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;audiosize = st-&gt;frame_size;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mode = st-&gt;mode;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ec_dec_init(&amp;dec,(unsigned char*)data,len);<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; } else {<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;audiosize = frame_size;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mode = st-&gt;prev_mode;<br clear="none">
&gt;<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;*_As the mode is made as prev mode now, which was a silk, this goes<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;inside,_*<br clear="none">
<span class="yiv0654384112">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp;/* SILK processing */<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (mode != MODE_CELT_ONLY)<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; {<br clear="none">
&gt;<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;*_Then in this function called this_*,<br clear="none">
<span class="yiv0654384112">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;silk_ret = silk_Decode( silk_dec, &amp;st-&gt;DecControl,<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lost_flag, first_frame, &amp;dec,<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;pcm_ptr, &amp;silk_frame_size );<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;*_And finally, somehow, the "silk_frame_size" is a negative value (<br clear="none">
<span class="yiv0654384112">&gt;&nbsp; &nbsp; &nbsp;say -1376272 in our case), then in the same function called the<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp;below and this crashes here._*<br clear="none">
<span class="yiv0654384112">&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; pcm_ptr += silk_frame_size * st-&gt;channels;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;Please help.<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;Thanks<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;Suresh<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp;On 12 April 2015 at 21:23, Jean-Marc Valin &lt;<a rel="nofollow" shape="rect" ymailto="mailto:jmvalin@jmvalin.ca" target="_blank" href="mailto:jmvalin@jmvalin.ca">jmvalin@jmvalin.ca</a><br clear="none">
</span><span class="yiv0654384112">&gt;&nbsp; &nbsp; &nbsp;&lt;mailto:<a rel="nofollow" shape="rect" ymailto="mailto:jmvalin@jmvalin.ca" target="_blank" href="mailto:jmvalin@jmvalin.ca">jmvalin@jmvalin.ca</a>&gt;&gt; wrote:<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Do you have any file that demonstrates the problem with either<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;opus_demo<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;or opusdec?<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Jean-Marc<br clear="none">
&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;On 09/04/15 04:01 AM, Suresh Thiriveedi wrote:<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; Hi,<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; I'm curious to know when would be the 1.1.1 stable version<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;available.<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; In 1.1, we are facing crash when opus library is trying to<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;decode the<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; CELT-only, full band and 20 ms. So we tried with 1.1.1 beta<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and it looks<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; to be fine. Is there any open issue regarding this in 1.1 version?<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; Thanks<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; Suresh<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; _______________________________________________<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; opus mailing list<br clear="none">
</span>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; <a rel="nofollow" shape="rect" ymailto="mailto:opus@xiph.org" target="_blank" href="mailto:opus@xiph.org">opus@xiph.org</a> &lt;mailto:<a rel="nofollow" shape="rect" ymailto="mailto:opus@xiph.org" target="_blank" href="mailto:opus@xiph.org">opus@xiph.org</a>&gt;<br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; <a rel="nofollow" shape="rect" target="_blank" href="http://lists.xiph.org/mailman/listinfo/opus">http://lists.xiph.org/mailman/listinfo/opus</a><br clear="none">
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
&gt;<br clear="none">
</blockquote></div><br clear="none"></div></div></div></div><br><div class="yqt1762627306" id="yqtfd53447">_______________________________________________<br clear="none">opus mailing list<br clear="none"><a shape="rect" ymailto="mailto:opus@xiph.org" href="mailto:opus@xiph.org">opus@xiph.org</a><br clear="none"><a shape="rect" href="http://lists.xiph.org/mailman/listinfo/opus" target="_blank">http://lists.xiph.org/mailman/listinfo/opus</a><br clear="none"></div><br><br></div> </div> </div>  </div></body></html>