< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate] meet an error when a DUM as an UAS processing an INVITE message with current SVN revision 9100


I have found the fix for this. change the following line in
InviteSession::getOfferAnswer(msg) calls:
-------------
return std::auto_ptr<Contents>(Helper::getSdp(msg.getContents()));  // line 2736
-------------
to:
-------------
      auto_ptr<SdpContents> temp = Helper::getSdp(msg.getContents());
      return temp;
-------------
please verify if my fix is correct, thanks!


On Fri, Apr 15, 2011 at 5:33 PM, Allen Guan <allenguan@xxxxxxxxx> wrote:
> Hi, all,
>
> I am using visual studio 2003 to build a very simple SIP server for
> testing with current SVN revision 9100. I added SipStack with an
> instance of DUM as its UA, this dum set an instance of
> InviteSessionHandler with some log lines in it, nothing more. when
> this DUM instance tries to process an INVITE message, it causes an
> error and the call stack looks as the following:
> ---------------------
>>       
>> MediaServer.exe!std::auto_ptr<resip::SdpContents>::operator<resip::Contents> 
>> std::auto_ptr_ref<resip::Contents>()  Line 452 + 0x6       C++
>       
>  MediaServer.exe!std::auto_ptr<resip::SdpContents>::operator<resip::Contents>
> std::auto_ptr_ref<resip::Contents>()  Line 454 + 0xc    C++
>       
>  MediaServer.exe!std::auto_ptr<resip::SdpContents>::operator<resip::Contents>
> std::auto_ptr_ref<resip::Contents>()  Line 454 + 0xc    C++
>       
>  MediaServer.exe!std::auto_ptr<resip::SdpContents>::operator<resip::Contents>
> std::auto_ptr_ref<resip::Contents>()  Line 454 + 0xc    C++
>       
>  MediaServer.exe!std::auto_ptr<resip::SdpContents>::operator<resip::Contents>
> std::auto_ptr_ref<resip::Contents>()  Line 454 + 0xc    C++
>       ..........................
> ---------------------
>
> When I dig into it step by step, I notice the error caused by the
> following line in ServerInviteSession::dispatchStart():
> ---------------
>   std::auto_ptr<Contents> offerAnswer =
> InviteSession::getOfferAnswer(msg);  // line 729
> ---------------
>
> this InviteSession::getOfferAnswer(msg) calls:
> -------------
> return std::auto_ptr<Contents>(Helper::getSdp(msg.getContents()));  // line 
> 2736
> -------------
>
> when this InviteSession::getOfferAnswer(msg) returns, the error
> happens. looks like it's caused by class type conversion?
>
> the following the more deep call stack for your reference.
> ----------------------------------
>>       MediaServer.exe!resip::Helper::getSdp(resip::Contents * 
>> tree=0x01ad54f8)  Line 2143     C++
>        MediaServer.exe!resip::InviteSession::getOfferAnswer(const
> resip::SipMessage & msg={...})  Line 2736 + 0x12        C++
>        MediaServer.exe!resip::ServerInviteSession::dispatchStart(const
> resip::SipMessage & msg={...})  Line 729 + 0x10 C++
>        MediaServer.exe!resip::ServerInviteSession::dispatch(const
> resip::SipMessage & msg={...})  Line 642        C++
>        MediaServer.exe!resip::Dialog::dispatch(const resip::SipMessage &
> msg={...})  Line 428    C++
>        MediaServer.exe!resip::DialogSet::dispatch(const resip::SipMessage &
> msg={...})  Line 893    C++
>        MediaServer.exe!resip::DialogUsageManager::processRequest(const
> resip::SipMessage & request={...})  Line 2073 + 0xf     C++
>       
>  MediaServer.exe!resip::DialogUsageManager::incomingProcess(std::auto_ptr<resip::Message>
> msg={...})  Line 1617   C++
>       
>  MediaServer.exe!resip::DialogUsageManager::internalProcess(std::auto_ptr<resip::Message>
> msg={...})  Line 1447   C++
>        MediaServer.exe!resip::DumThread::thread()  Line 26     C++
>        MediaServer.exe!threadIfThreadWrapper(void * threadParm=0x01aa03c8)
> Line 51 + 0xd   C++
>        msvcr71d.dll!_threadstartex(void * ptd=0x01aa0910)  Line 241 + 0xd     
>  C
>        kernel32.dll!7c80b729()
> -------------------------------------
>
> Could someone please take a look at this? thanks!
>
> -Allen
>