[asterisk-bugs] [Asterisk 0013160]: Memory leak in iax2-parser.c
Asterisk Bug Tracker
noreply at bugs.digium.com
Tue Jul 29 07:23:45 CDT 2008
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=13160
======================================================================
Reported By: tavius
Assigned To:
======================================================================
Project: Asterisk
Issue ID: 13160
Category: Channels/chan_iax2
Reproducibility: always
Severity: major
Priority: normal
Status: new
Asterisk Version: 1.4.21.2
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Disclaimer on File?: N/A
Request Review:
======================================================================
Date Submitted: 2008-07-25 10:10 CDT
Last Modified: 2008-07-29 07:23 CDT
======================================================================
Summary: Memory leak in iax2-parser.c
Description:
We have found compiling asterisk without LOW_MEMORY has a memory leak in
iax_frame_new. It seems that the AST_LIST_TRAVERSE_SAFE_BEGIN macro is not
traversing the linked list in good way.
We have traced adding some ast_log in the code that iax_frame_free add
buffers in the frame cache linked list and after that iax_frame_new does
not find this free buffer in the list and allocates a new buffer with
ast_calloc_cache.
With the time and with our system, that receives too many calls, asterisk
gets all the available memory in the system and produces an error.
If we compile with LOW_MEMORY, then this piece of code is not compiled and
asterisk does not have memory leaks.
======================================================================
----------------------------------------------------------------------
(0090792) russell (administrator) - 2008-07-29 07:23
http://bugs.digium.com/view.php?id=13160#c90792
----------------------------------------------------------------------
For anyone looking at debugging this, the first thing that I wanted to do
was check to see if there are any threads in chan_iax2 that only free
frames, or free a lot more than they allocate. In that case, the
iax_frame_free function could take a parameter to hint whether the frame
should be cached or not. See main/frame.c for similar handling. If that
won't work for some reason, then the patch I posted to the -dev list to
limit the cache size is probably the next best thing.
Issue History
Date Modified Username Field Change
======================================================================
2008-07-29 07:23 russell Note Added: 0090792
======================================================================
More information about the asterisk-bugs
mailing list