Great! I didn't have time to give it a try yet but I was afraid about the need
of design changes.
thanks a lot
Vaclav
On St, dub 09, 2014 at 10:38:41 +0300, Michael Furmur wrote:
> the patch below fixes issue (just fix for logging lines. pointers is
> checked in main function code)
>
> diff --git a/core/AmB2BMedia.cpp b/core/AmB2BMedia.cpp
> index 9dc8db3..942f95f 100644
> --- a/core/AmB2BMedia.cpp
> +++ b/core/AmB2BMedia.cpp
> @@ -957,7 +957,7 @@ void AmB2BMedia::updateRelayStream(AmRtpStream
> *stream, AmB2BSession *session,
> void AmB2BMedia::updateStreams(bool a_leg, const AmSdp &local_sdp,
> const AmSdp &remote_sdp, RelayController *ctrl)
> {
> TRACE("%s (%c): updating streams with local & remote SDP\n",
> - a_leg ? a->getLocalTag().c_str() : b->getLocalTag().c_str(),
> + a_leg ? (a ? a->getLocalTag().c_str() : NULL) : (b ?
> b->getLocalTag().c_str() : NULL),
> a_leg ? 'A': 'B');
>
> /*string s;
>
> On 04/09/2014 10:32 AM, Václav Kubart wrote:
> > Hi Michael,
> > thanks a lot for detailed bug report! I will look on it as soon as possible.
> > Vaclav
> >
> > On St, bře 26, 2014 at 02:34:56 +0200, Michael Furmur wrote:
> >> hi community,
> >>
> >> i caught sigsegv in case when 200OK arrived after rtp timeout event and
> >> sems was working with SBC module
> >>
> >> (gdb) bt 8
> >> #0 AmSession::getLocalTag (this=0x0)
> >> #1 0x00000000004a61a7 in AmB2BMedia::updateStreams
> >> (this=0x7fffec004950, a_leg=false, local_sdp=..., remote_sdp=...,
> >> ctrl=ctrl@entry=0x7fffec002fe8)
> >> #2 0x00000000005007cf in AmB2BSession::onSdpCompleted
> >> (this=this@entry=0x7fffec002b50, local_sdp=..., remote_sdp=...)
> >> #3 0x00007ffff41b32f9 in CallLeg::onSdpCompleted
> >> (this=this@entry=0x7fffec002b50, offer=..., answer=...)
> >> #4 0x000000000052c181 in AmSipDialog::onSdpCompleted (this=0x7fffec003cf0)
> >> #5 0x000000000051a907 in AmOfferAnswer::onReplyIn
> >> (this=this@entry=0x7fffec004070, reply=...)
> >> #6 0x000000000052f2ef in AmSipDialog::onRxReplyStatus
> >> (this=0x7fffec003cf0, reply=..., t_uac_it=...)
> >> #7 0x000000000047d160 in AmBasicSipDialog::onRxReply
> >> (this=0x7fffec003cf0, reply=...)
> >> (More stack frames follow...)
> >>
> >> (gdb) frame 1
> >> #1 0x00000000004a61a7 in AmB2BMedia::updateStreams
> >> (this=0x7fffec004950, a_leg=false, local_sdp=..., remote_sdp=...,
> >> ctrl=ctrl@entry=0x7fffec002fe8)
> >> 959 TRACE("%s (%c): updating streams with local & remote SDP\n",
> >> (gdb) p a
> >> $2 = (AmB2BSession *) 0x0
> >> (gdb) p b
> >> $3 = (AmB2BSession *) 0x0
> >>
> >>
> >> so segfault happened here:
> >>
> >> core/AmB2BMedia.cpp:
> >> 957 void AmB2BMedia::updateStreams(bool a_leg, const AmSdp &local_sdp,
> >> const AmSdp &remote_sdp, RelayController *ctrl)
> >> 958 {
> >> 959 TRACE("%s (%c): updating streams with local & remote SDP\n",
> >> 960 a_leg ? a->getLocalTag().c_str() : b->getLocalTag().c_str(),
> >> 961 a_leg ? 'A': 'B');
> >>
> >> thus AmB2BMedia doesn't properly process streams changes due to
> >> RtpTimeout event.
> >>
> >> it would be nice decide what's correct behavior in this case. (maybe
> >> remove session in early state on rtptimeout or consider possibility that
> >> streams may be removed before OK arrived)
> >>
> >> sipp uas scenario to reproduce this case present in attach
> >>
> >> --
> >> Best Regards
> >> Michael Furmur
> >>
> >> <?xml version="1.0" encoding="ISO-8859-1" ?>
> >> <!DOCTYPE scenario SYSTEM "sipp.dtd">
> >>
> >> <scenario name="UAS responder with delays">
> >>
> >> <recv request="INVITE" crlf="true">
> >> </recv>
> >>
> >> <pause milliseconds="24"/>
> >>
> >> <send>
> >> <![CDATA[
> >>
> >> SIP/2.0 100 Giving a try
> >> [last_Via:]
> >> [last_From:]
> >> [last_To:];tag=[pid]SIPpTag01[call_number]
> >> [last_Call-ID:]
> >> [last_CSeq:]
> >> Contact: <sip:[local_ip]:[local_port];transport=[transport]>
> >> Server: VCSR
> >> Content-Length: 0
> >>
> >> ]]>
> >> </send>
> >>
> >> <pause milliseconds="2470"/>
> >>
> >> <send>
> >> <![CDATA[
> >>
> >> SIP/2.0 183 Session Progress
> >> [last_Via:]
> >> [last_From:]
> >> [last_To:];tag=[pid]SIPpTag01[call_number]
> >> [last_Call-ID:]
> >> [last_CSeq:]
> >> Contact: <sip:[local_ip]:[local_port];transport=[transport]>
> >> Content-Disposition: session; handling=required
> >> Content-Type: application/sdp
> >> Content-Length: [len]
> >>
> >> v=0
> >> o=Sonus_UAC 6574 4936 IN IP4 [local_ip]
> >> s=SIP Media Capabilities
> >> c=IN IP4 [local_ip]
> >> t=0 0
> >> m=audio 6116 RTP/AVP 0 101
> >> a=direction: passive
> >> a=rtpmap:0 PCMU/8000
> >> a=rtpmap:101 telephone-event/8000
> >> a=fmtp:101 0-15
> >> a=sendrecv
> >> a=ptime:20
> >>
> >> ]]>
> >> </send>
> >>
> >> <pause milliseconds="25736"/>
> >>
> >> <send>
> >> <![CDATA[
> >>
> >> SIP/2.0 180 Ringing
> >> [last_Via:]
> >> [last_From:]
> >> [last_To:];tag=[pid]SIPpTag01[call_number]
> >> [last_Call-ID:]
> >> [last_CSeq:]
> >> Contact: <sip:[local_ip]:[local_port];transport=[transport]>
> >> Content-Disposition: session; handling=required
> >> Content-Type: application/sdp
> >> Content-Length: [len]
> >>
> >> v=0
> >> o=Sonus_UAC 6574 4936 IN IP4 [local_ip]
> >> s=SIP Media Capabilities
> >> c=IN IP4 [local_ip]
> >> t=0 0
> >> m=audio 6116 RTP/AVP 0 101
> >> a=direction: passive
> >> a=rtpmap:0 PCMU/8000
> >> a=rtpmap:101 telephone-event/8000
> >> a=fmtp:101 0-15
> >> a=sendrecv
> >> a=ptime:20
> >>
> >> ]]>
> >> </send>
> >>
> >> <pause milliseconds="25052"/>
> >>
> >> <send>
> >> <![CDATA[
> >>
> >> SIP/2.0 200 OK
> >> [last_Via:]
> >> [last_From:]
> >> [last_To:]
> >> [last_Call-ID:]
> >> [last_CSeq:]
> >> Contact: <sip:[local_ip]:[local_port];transport=[transport]>
> >> Content-Disposition: session; handling=required
> >> Content-Type: application/sdp
> >> Content-Length: [len]
> >>
> >> v=0
> >> o=Sonus_UAC 6574 4936 IN IP4 [local_ip]
> >> s=SIP Media Capabilities
> >> c=IN IP4 [local_ip]
> >> t=0 0
> >> m=audio 6116 RTP/AVP 0 101
> >> a=direction: passive
> >> a=rtpmap:0 PCMU/8000
> >> a=rtpmap:101 telephone-event/8000
> >> a=fmtp:101 0-15
> >> a=sendrecv
> >> a=ptime:20
> >>
> >> ]]>
> >> </send>
> >>
> >> <timewait milliseconds="4000"/>
> >>
> >> <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
> >> <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
> >>
> >> </scenario>
> >>
> >> _______________________________________________
> >> Semsdev mailing list
> >> [email protected]
> >> http://lists.iptel.org/mailman/listinfo/semsdev
>
>
> --
> Best Regards
> Michael Furmur
>
> _______________________________________________
> Semsdev mailing list
> [email protected]
> http://lists.iptel.org/mailman/listinfo/semsdev
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev