[asterisk-dev] IAX2 changes - thank you!

Russell Bryant russell at digium.com
Tue Aug 14 16:26:53 CDT 2007

Loic Didelot wrote:
> Hello,
> for now I did some basic testing. So I flooded asterisk with 800
> registrations, one every millisecond. Yep, this is a lot but no problem
> for SIP at all. It works for IAX too as long as "rtcachefriends=no". 
> Because I like being nice with asterisk I even try to reload asterisk
> during the flood process. Everything works fine except if
> rtcachefriends=yes. In that case I need to wait only a few seconds and
> asterisk crashes. This problem is in asterisk since always.
> The last thing I see on my CLI  is: 
> *** glibc detected *** corrupted double-linked list: 0x0000002a9e649f40
> ***
> Aborted

I have been working on this test system for the past couple of days.  Yesterday, 
I fixed a bunch of deadlocks in chan_iax2 that were exposed by this load test. 
Today, I have been working on the crash.

It was trivial to make this system crash, as described above.  However, every 
backtrace was different.  Looking at each one led me to the conclusion that it 
was due to poor (lack of) reference counting of the iax2_peer objects.

I wrote a patch to fix this but I would like to get some testing on it before 
commit.  Also, the ideal solution would be to go ahead and convert it to use 
astobj2, but I'll leave that for another day.  It appears to be working on this 
test system.

The code, a branch off of 1.4, is here if anyone is interested in trying it out:

$ svn co http://svn.digium.com/svn/asterisk/team/russell/iax_refcount

For the actual code, see this commit:


Russell Bryant
Software Engineer
Digium, Inc.

More information about the asterisk-dev mailing list