sipp
sipp copied to clipboard
Out-of-order message causes sipp crash
Note: I was able to get the same issue reproduced with sipp 3.3, 3.6 only when UAS and UAC were running on different machines, running on the same box is not getting it reproduced for some reason. Below is the command to run sipp, in archive - pieces of xml scenarios I was using, coredump and trace_msg. From used scenario only failing part was added. Main goal of such scenario was to handle properly out-of-order 200OK for INVITE and PRACK, since last_* variable has no power for this case.
OS - FreeBSD 10.3 and FreeBSD 11.2
UAC:
sudo sipp 192.168.0.3 -i 10.0.2.15 -d 9000 -p 1036 -m 1 -cp 8884 -mp 8894 -mi 10.0.2.15 -nd -sf uac_fail_simple.xml -s authrule_12064248284 -trace_msg
UAS:
sipp -i 192.168.0.3 -sf uas_prack_fail.xml
sipp_coredump_scenarios_log.zip
Messages Retrans Timeout Unexpected-Msg
INVITE ----------> 1 0
100 <---------- 1 0 0 0
180 <---------- E-RTD1 1 0 0 0
200 <---------- E-RTD1 0 0 0 0
Pause [ 9000ms] 1 1
PRACK ----------> 0 0
200 <---------- E-RTD1 0 0 0 0
ACK ----------> 0 0
------- Waiting for active calls to end. Press [q] again to force exit. -------
Last Error: Continuing call on unexpected message for Call-Id '1-28127@1...
Assertion failed: (!call_scenario->transactions[checkTxn - 1].isInvite), function process_incoming, file call.cpp, line 3153.
Abort trap (core dumped)
Still happens in latest sipp with no coredump as well as in v3.6.1 and v3.6.0
[user@box ~/callscenarios]$ uname -r
11.2-RELEASE-p9
[user@box ~/callscenarios]$ ./sipp/sipp -v
SIPp v3.7-dev-18-g9f62be0-TLS-SCTP-PCAP-RTPSTREAM-RTPCHECK.
------------------------------ Scenario Screen -------- [1-9]: Change Screen --
Call rate (length) Port Total-time Total-calls Remote-host
10.0(12000 ms)/1.000s 1036 38.08 s 1 178.62.244.101:5060(U
Call limit 1 hit, 10.0 s period 1 ms scheduler resolution
1 calls (limit 828) Peak was 1 calls, after 0 s
0 Running, 2 Paused, 3 Woken up
0 dead call msg (discarded) 0 out-of-call msg (discarded)
2 open sockets 0/0/0 UDP errors (send/recv/cong)
0 Total RTP pckts sent 0.000 last period RTP rate (kB/s)
Messages Retrans Timeout Unexpected-Msg
0 : INVITE ----------> 1 0
1 : 100 <---------- 1 0 0 0
2 : 180 <---------- E-RTD1 1 0 0 0
3 : PRACK ----------> 1 0
4 : 200 <---------- 1 0 0 0
5 : 183 <---------- 1 4 0 0
6 : Pause [ 12.0s] 1 0
7 : PRACK ----------> 0 0
8 : 200 <---------- E-RTD1 0 0 0 0
9 : 200 <---------- E-RTD1 0 0 0 0
10: 200 <---------- E-RTD1 0 0 0 0
11: 200 <---------- E-RTD1 0 0 0 0
12: Pause [ 12.8s] 0 0
13: ACK ----------> 0 0
14: INVITE <---------- 0 0 0 0
15: 100 ----------> 0 0
16: Pause [ 2800ms] 0 0
17: 200 ----------> 0 0
18: ACK <---------- 0 0 0 0
19: BYE ----------> 0 0
20: 200 <---------- 0 0 0 0
------- Waiting for active calls to end. Press [q] again to force exit. -------
Assertion failed: (!call_scenario->transactions[checkTxn - 1].isInvite), function process_incoming, file /home/user/callscenarios/sipp/src/call.cpp, line 5346.
Abort trap
Attaching a new set of test scenarios I used here just for the case. prack_scenarios.zip