Summary: | ASTERISK-11347: G729 decoders not freed after IAX2 call | ||
Reporter: | P. Christeas (xrg) | Labels: | |
Date Opened: | 2008-01-31 14:13:02.000-0600 | Date Closed: | 2008-01-31 17:12:11.000-0600 |
Priority: | Major | Regression? | No |
Status: | Closed/Complete | Components: | Channels/chan_iax2 |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) 11892.diff | |
Description: | Early report. I have verified that in an SIP -> IAX2 call where the SIP leg has g729 and the IAX2 ilbc + jitterbuffer, the g729 *decoder* is not freed! As a result, after 2 calls I can see: > show g729 0/2 encoders/decoders of 20 licensed channels are currently in use .. while system is idle. I guess this has to do with recent changes in 1.4.18, since there was nothing similar in 1.4.17. | ||
Comments: | By: P. Christeas (xrg) 2008-01-31 14:50:49.000-0600 Must be related to ASTERISK-11169, it seems there is a path that will cause destroy(ast_trans_pvt *) from main/translate.c:139 not to be called after the flag, thus not freeing the codec. By: Russell Bryant (russell) 2008-01-31 16:38:41.000-0600 Please give this patch a try. By: P. Christeas (xrg) 2008-01-31 16:57:41.000-0600 How can I increase your karma?? It worked! Of course, I will be testing it more for the next hours.. By: Russell Bryant (russell) 2008-01-31 17:03:07.000-0600 Ha! I never get karma for the patches I write these days. That's ok, though, it's my job. :) I'm glad it worked. I'm going to go ahead and commit it. Please let me know if you find any additional problems. Thanks! By: Digium Subversion (svnbot) 2008-01-31 17:07:42.000-0600 Repository: asterisk Revision: 101601 U branches/1.4/main/file.c U branches/1.4/main/translate.c ------------------------------------------------------------------------ r101601 | russell | 2008-01-31 17:07:41 -0600 (Thu, 31 Jan 2008) | 12 lines Fix a couple of places where ast_frfree() was not called on a frame that came from a translator. This showed itself by g729 decoders not getting released. Since the flag inside the translator frame never got unset by freeing the frame to indicate it was no longer in use, the translators never got destroyed, and thus the g729 licenses were not released. (closes issue ASTERISK-11347) Reported by: xrg Patches: 11892.diff uploaded by russell (license 2) Tested by: xrg, russell ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=101601 By: Digium Subversion (svnbot) 2008-01-31 17:12:11.000-0600 Repository: asterisk Revision: 101611 _U trunk/ U trunk/main/file.c U trunk/main/translate.c ------------------------------------------------------------------------ r101611 | russell | 2008-01-31 17:12:11 -0600 (Thu, 31 Jan 2008) | 20 lines Merged revisions 101601 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r101601 | russell | 2008-01-31 17:10:06 -0600 (Thu, 31 Jan 2008) | 12 lines Fix a couple of places where ast_frfree() was not called on a frame that came from a translator. This showed itself by g729 decoders not getting released. Since the flag inside the translator frame never got unset by freeing the frame to indicate it was no longer in use, the translators never got destroyed, and thus the g729 licenses were not released. (closes issue ASTERISK-11347) Reported by: xrg Patches: 11892.diff uploaded by russell (license 2) Tested by: xrg, russell ........ ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=101611 |