RE: [reSIProcate] DNS Crash?
James,
This fixes it.
Thanks!
Christian
"James Ryan"
<jryan@xxxxxxxxxx
om> . To
<Christian_Gavin@xxxxxxxxxxxx>,
08/04/2005 10:00 <resiprocate-devel@xxxxxxxxxxxxxxxx
AM org>
cc
Subject
RE: [reSIProcate] DNS Crash?
Christian,
This sounds similar to a case that was fixed with this update
to
TransactionState.cxx. The TransactionState object was being deleted
early. Try this out and see if it solves your issue.
http://scm.sipfoundry.org/viewsvn/resiprocate/main/sip/resiprocate/Trans
actionState.cxx?r1=5124&r2=5125&diff_format=l
James
> -----Original Message-----
> From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:resiprocate-
> devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> Christian_Gavin@xxxxxxxxxxxx
> Sent: Thursday, August 04, 2005 12:46 PM
> To: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [reSIProcate] DNS Crash?
>
> Hi,
>
> I am testing a case where a client attempts to REGISTER shortly after
> network connectivity is lost.
>
> When I launch my client, disable my network adapter, then try to
REGISTER,
> reSIProcates crashes. I have included the stack trace below. assert
causes
> an access violation because the value of "this" is something like
> 0xdddddddd (I also saw 0xfeeefeee).
>
> I only see this happening shortly after network connectivity is lost.
If I
> try again, I get a DNS 503 "service not available" error, as expected.
If
> I
> wait a while after the network is disabled, the problem does not
occur.
>
> Has anyone seen this? I am using reSIProcate 0.9
>
> CG
>
> > xxxxxxxx.dll!resip::DnsResult::available() Line 103 + 0x3 C++
>
> DnsResult::Type
> DnsResult::available()
> {
> >> assert(mType != Destroyed);
> if (mType == Available)
>
>
> >
>
xxxxxxxx.dll!resip::TransactionState::sendToWire(resip::TransactionMessa
ge
> * msg=0x02a85458, bool resend=false) Line 1498 + 0xb C++
>
> else if (mDnsResult == 0 && !mIsCancel) // no dns query yet
> {
> StackLog (<< "sendToWire with no dns result: " << *this);
> assert(sip->isRequest());
> assert(!mIsCancel);
> mDnsResult =
> mController.mTransportSelector.createDnsResult(this);
> mController.mTransportSelector.dnsResolve(mDnsResult,
sip);
> assert(mDnsResult); // !ah! is this really an assertion or
an
> error?
>
> // do it now, if there is an immediate result
> >> if (mDnsResult->available() == DnsResult::Available)
> {
> handle(mDnsResult);
> }
>
> >
>
xxxxxxxx.dll!resip::TransactionState::processClientNonInvite(resip::Tran
sa
> ctionMessage
> * msg=0x02a85458) Line 444 C++
>
> void
> TransactionState::processClientNonInvite(TransactionMessage*
msg)
> {
> StackLog (<< "TransactionState::processClientNonInvite: " <<
> msg->brief());
>
> assert(!isInvite(msg));
>
> if (isRequest(msg) && isFromTU(msg))
> {
> //StackLog (<< "received new non-invite request");
> SipMessage* sip = dynamic_cast<SipMessage*>(msg);
> delete mMsgToRetransmit;
> mMsgToRetransmit = sip;
> mController.mTimers.add(Timer::TimerF, mId, Timer::TF);
> >> sendToWire(sip); // don't delete
> }
> else if (isResponse(msg) && isFromWire(msg)) // from the wire
> ...
>
>
> >
>
xxxxxxxx.dll!resip::TransactionState::process(resip::TransactionControll
er
> & controller={...}) Line 353 C++
>
> ...
> switch (state->mMachine)
> {
> case ClientNonInvite:
> >> state->processClientNonInvite(message);
> break;
> case ClientInvite:
> ...
>
> > xxxxxxxx.dll!resip::TransactionController::process(resip::FdSet
&
> fdset={...}) Line 91 + 0x9 C++
>
> ...
> while (mStateMacFifo.messageAvailable())
> {
> if (mStateless)
> {
> mStatelessHandler.process();
> }
> else
> {
> >> TransactionState::process(*this);
> }
> }
> }
> }
>
>
> > xxxxxxxx.dll!resip::SipStack::process(resip::FdSet &
fdset={...})
> Line 422 C++
>
> void
> SipStack::process(FdSet& fdset)
> {
> if(!mShuttingDown)
> {
> RESIP_STATISTICS(mStatsManager.process());
> }
> mTransactionController.process(fdset);
> >> mTuSelector.process();
>
> Lock lock(mAppTimerMutex);
> mAppTimers.process();
> }
>
> > xxxxxxxx.dll!CSIPStack::ThreadProc(void *
lpParameter=0x00000000)
> Line 462 C++
> ...
> stackUac.process(fdset);
> >> while(clientDum.process());
> ...
>
> > xxxxxxxx.dll!CWorkerThread::StaticThreadProc(void *
> lpParameter=0x015467b4) Line 86 + 0x10 C++
>
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel