Summary:ASTERISK-19779: Asterisk segfaults when handling sip_security_event and attempting to load realtime peer with no realtime backend
Reporter:Aleksandr Gordeev (axonaro)Labels:
Date Opened:2012-04-24 12:15:56Date Closed:2015-03-13 21:39:24
Versions:10.3.0 10.4.0 Frequency of
is a clone ofASTERISK-19713 Asterisk segfaults on invalid datastore in channel destructor
Environment:Attachments:( 0) ASTERISK-19779-backtrace.txt
Description:Asterisk always segfault after processing a certain number of calls

exten => service,1,Progress
exten => service,n,Wait(2)
exten => service,n,Playback(vm-sorry,noanswer)
exten => service,n,Hangup
Comments:By: Matt Jordan (mjordan) 2012-04-24 12:20:54.752-0500

Attached backtrace is from the original issue, illustrating the crash originating from the sip_find_peer call from sip_security_event

By: Michael L. Young (elguero) 2012-04-24 19:29:04.162-0500

Initial look at this... sip_security_event calls sip_find_peer which calls sip_find_peer_full.  This function should find the peer and return it before reaching the code block that proceeds to check for a realtime peer.

I started to put together a patch for sip_security_event to check if realtime was being used and then call sip_find_peer with realtime set to TRUE or FALSE but I think something else must be going on.  I am not sure why we are reaching that block of code to begin with in sip_find_peer_full.  Also, I see other areas of chan_sip that are calling sip_find_peer in the same way as sip_security_event without checking if realtime is being used or not.

By: Matt Jordan (mjordan) 2012-04-25 07:29:29.275-0500

Yeah, I'm not convinced this is the fault of sip_security_event, just that the crash originated from there.  Based on the backtrace, however, it appears as if an attempt was made to load a non-existant realtime backend from that call - so I'm not sure what got attempted from sip_find_peer that shouldn't have.

By: Matt Jordan (mjordan) 2015-03-13 21:39:15.831-0500

Per the Asterisk versions page [1], the maintenance (bug fix) support for the Asterisk branch you are using has ended. For continued maintenance support please move to a supported branch of Asterisk. After testing with a supported branch, if you find this problem has not been resolved, please open a new issue against the latest version of that Asterisk branch.


[1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions