[asterisk-dev] [Code Review] Fix Bridging thread leak
jrose
reviewboard at asterisk.org
Fri Jul 6 09:09:57 CDT 2012
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/2012/#review6617
-----------------------------------------------------------
/branches/1.8/main/bridging.c
<https://reviewboard.asterisk.org/r/2012/#comment12574>
pthread_join has unchecked return. Maybe you should display a warning or an error when it fails. I'm not sure how useful that would be. Inconsistencies from unchecked returns were something I had to work on for an issue a while back though.
- jrose
On July 5, 2012, 5:11 p.m., Mark Michelson wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/2012/
> -----------------------------------------------------------
>
> (Updated July 5, 2012, 5:11 p.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Summary
> -------
>
> It appears that under normal circumstances, bridging threads are never joined using pthread_join(). The reporter supplied a patch that makes the bridge thread detached rather than joinable. I don't feel this is sufficient because the smart_bridge_operation() joins the thread partway through its method. This implies that it intends for the bridge thread to be completely finished and cleaned up prior to continuing.
>
> In this patch, I have fixed the leak by adding a pthread_join() call to the code in ast_bridge_destroy(). I also have modified bridge_check_dissolve() not to set the stop flag. If bridge_check_dissolve() sets the stop flag for the bridge, then the bridge_thread will set bridge->thread to AST_PTHREADT_NULL. This will make it impossible for ast_bridge_destroy() to be able to tell if there is a thread that needs to be joined.
>
>
> This addresses bug ASTERISK-19834.
> https://issues.asterisk.org/jira/browse/ASTERISK-19834
>
>
> Diffs
> -----
>
> /branches/1.8/main/bridging.c 369625
>
> Diff: https://reviewboard.asterisk.org/r/2012/diff
>
>
> Testing
> -------
>
> Ran a SIPp scenario that had calls constantly joining and leaving a conference bridge until a total of 2000 participants had joined and left.
>
> Unfortunately, it's difficult to see if the added pthread_join() calls are doing anything because on my system, neither gdb nor /proc will display zombie threads. So for me anyway, gdb and /proc appear the same before and after applying the patch. More importantly, this patch does not appear to cause any crashes or other problems.
>
>
> Thanks,
>
> Mark
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120706/cee6eb7e/attachment.htm>
More information about the asterisk-dev
mailing list