< Previous by Date | Date Index | Next by Date > |
< Previous in Thread | Thread Index |
Hello Scott,thanks after some hours of digging in the code i found what you mentioned... there were two threads going on, one where the onTerminated was handled and the one where the processEvents takes place.thanks for you support.P.S. does the small patch to removeSupportedMethod makes sense? should i make a git pull request?On Fri, Aug 4, 2017 at 4:06 PM, Scott Godin <sgodin@xxxxxxxxxxxxxxx> wrote:Sounds like you might be calling end() from a thread that is not the DUM processing thread.ScottOn Thu, Aug 3, 2017 at 2:36 PM, Francesco Lamonica <alienpenguin@xxxxxxxxx> wrote:______________________________Hi all,i program i wrote using resiprocate crashed with the following stack trace:#0 resip::Dialog::end (this=0x0) at Dialog.cxx:3500000001 0x00007ffff198dfac in resip::DialogSet::end (this=0x7fffa8312030) at DialogSet.cxx:10270000002 0x00007ffff56958d4 in ReSipHandler::sendBye (this=0x7fffa82864a0, linePtr=0x7fffa82851b0) at src/ReSipHandler.cpp:6390000003 0x00007ffff5611aad in MyApp::abortCall (this=0x7fffd8043410, lid=0) at src/MyApp.cpp:6702As you can see there is a NULL pointer (Dialog) that is called from the line 1027 of DialogSet:1021 case Established:
1022 {
1023 for (DialogMap::iterator it = mDialogs.begin(); it != mDialogs.end(); ++it)
1024 {
1025 try
1026 {
1027 it->second->end();
1028 }
1029 catch(UsageUseException& e)
1030 {
1031 InfoLog (<< "Caught: " << e);
1032 }
1033 }
1034 mState = Terminating;
1035 break;
1036 }So it seems that it->second is NULL.the caller is a class (ResipCallData) that i wrote inheriting from AppDialogSet as (hopefully) per the examples in the documentation and that was used to create the InviteSession.the crash happened while trying to end the call like this (SendBye):ResipCallData *h = linePtr->getSipSession();if (!h) {qCritical() << "Could not find the handle for the call";*logger << UNQL::LOG_CRITICAL << "Cannot find the handle for the call to terminate on line "<< linePtr->getLineId() << UNQL::EOM;return SipStackError;}
AppDialogSetHandle adsh = h->getHandle();if (!adsh.isValid())qCritical() << Q_FUNC_INFO << "Invalid ADSH!";h->end(); // <-- This is where the crash happened.From what i gathered the session was getting closed from the remote party as well when this happened.Do you have any insight of what i might be checking?thanks in advance_________________
resiprocate-users mailing list
resiprocate-users@resiprocate.org
List Archive: http://list.resiprocate.org/archive/resiprocate-users/