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