[asterisk-dev] [Code Review] 2426: IAX2 defer_full_frames fail to get sent

Matt Jordan reviewboard at asterisk.org
Thu Apr 11 16:08:04 CDT 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/2426/#review8245
-----------------------------------------------------------

Ship it!


Ship It!

- Matt Jordan


On April 4, 2013, 7:23 a.m., Alec Davis wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/2426/
> -----------------------------------------------------------
> 
> (Updated April 4, 2013, 7:23 a.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Bugs: ASTERISK-18827
>     https://issues.asterisk.org/jira/browse/ASTERISK-18827
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> On a slower machine when a full_frame with the same callno is already being processed by another thread the frame is queued onto the other thread.
> However, nothing indicates to the other thread that it now has a frame to process.
> 
> On the bug report, I have debug messages in the patch.
> In theory, the thread that is already processing the callno should pickup the deferred frames, but it doesn't.
> 
> What was also revealed in ASTERISK-18827 using iax_18827.diff2.txt, is that the deferred frames queue increases each time a POKE/PONG is initiated.
> At some stage this will exhaust memory.
> Refer to the line below
> +		ast_log(LOG_WARNING, "ALEC[%d] unhandled frame on thread [%d]\n", from_here->threadnum, to_here->threadnum);
> 
> 
> Diffs
> -----
> 
>   trunk/channels/chan_iax2.c 376441 
> 
> Diff: https://reviewboard.asterisk.org/r/2426/diff/
> 
> 
> Testing
> -------
> 
> Before patch:
> 
> astrid-test*CLI> iax2 show threads
> IAX2 Thread Information
> Idle Threads:
> Thread 2: state=0, update=5, actions=4, func=''
> Thread 3: state=0, update=4, actions=2, func=''
> Thread 4: state=0, update=10, actions=2, func=''
> Thread 5: state=0, update=3, actions=4, func=''
> Thread 6: state=0, update=8, actions=2, func=''
> Thread 7: state=0, update=2, actions=3, func=''
> Thread 8: state=0, update=1, actions=3, func=''
> Thread 9: state=0, update=0, actions=3, func=''
> Thread 10: state=0, update=6, actions=1, func=''
> Active Threads:
> Thread P1: state=1, update=1365045454, actions=0, func='socket_process'
> Dynamic Threads:
> 10 of 10 threads accounted for with 0 dynamic threads
> 
> and iax2 show peers reports link is UNREACHABLE
> 
> 
> After patch:
> iax2 show threads has all idle.
> 
> iax2 show peers (immediately after 'module load chan_iax2.so')
> Name/Username    Host                 Mask             Port          Status      Description
> astrid2/astrid2  192.168.xxx.yyy (S)  255.255.255.255  4569 (T)      OK (1002 ms)
> 1 iax2 peers [1 online, 0 offline, 0 unmonitored]
> 
> 
> Thanks,
> 
> Alec Davis
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130411/5251a29e/attachment-0001.htm>


More information about the asterisk-dev mailing list