[reSIProcate] assertion: "DUM let me send a BYE at an incorrectstate"
Diego Carvalho Domingos
ddomingos at daitangroup.com
Wed Feb 24 12:24:00 CST 2016
Hi all,
I'm reopening this topic because I think it is not totally fixed. I had the exact same problem due to thread concurrency.
So, the original fix was:
if(!isTerminated()) // make sure application didn't call end()
{
dispatchConnected(msg); // act as if we received message in Connected state
}
else
{
dispatchTerminated(msg);
}
But imagine that the application did not call end() from onOfferRequestRejected but pushed an event for another thread (in my case I call it CallManager). In this case, the !isTerminated test will pass and dispatchConnected will be executed. Inside this method, there is this code:
case OnInviteReliableOffer:
*mLastRemoteSessionModification = msg;
transition(ReceivedReinvite);
If the context switches to the other thread before transition(ReceivedReinvite) and my CallManager thread sends a BYE (calls end()), the code would end up in the same situation when receiving the 200-OK for the BYE and would crash (assert(0)).
I don't know what would be the final solution for this since I don't know much of resiprocate code. Does anyone have a solution for this? Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20160224/a0aa2fe8/attachment.htm>
More information about the resiprocate-devel
mailing list