daemon: infinite loop of sending message when hanging up unsanswered call
Issue generated from Tuleap's migration script. Originally submitted by: Stepan Salenikovich (ssalenik)
Made a call from (updated master) Ring A to (updated master) Ring B and then hung up on Ring A side during ringing.
On Ring A side, I get this log infinitely looping:
[1477411172.948|20753|sipvoiplink.cpp:1117 ] [INVITE:0x190ae88] tsx\_role=0, tsx\_state=1, ev\_type=5, tsx\_state\_type=2
On Ring B side, I get this log infinitely looping:
[1477411326.927|12670|sipvoiplink.cpp:1117 ] [INVITE:0x55555684fdb8] tsx\_role=1, tsx\_state=6, ev\_type=5, tsx\_state\_type=1
On Ring A side, stopping the execution in gdb, I get this bt:
\^C[New Thread 0x7fffe5be7700 (LWP 20785)] [New Thread 0x7fffeda05700 (LWP 20784)] [New Thread 0x7fffe77fe700 (LWP 20782)] [New Thread 0x7fffd37fd700 (LWP 20774)] [New Thread 0x7fffd3ffe700 (LWP 20767)] [New Thread 0x7fffe4be5700 (LWP 20766)] Program received signal SIGINT, Interrupt. 0x00000000006792c6 in find\_entry () (gdb) bt \#0 0x00000000006792c6 in find\_entry () \#1 0x000000000067955b in hash\_set () \#2 0x000000000067964b in pj\_hash\_set\_lower () \#3 0x000000000062fcee in mod\_tsx\_layer\_register\_tsx () \#4 0x00000000006312f6 in pjsip\_tsx\_create\_uac2 () \#5 0x0000000000630ebb in pjsip\_tsx\_create\_uac () \#6 0x0000000000637c05 in pjsip\_dlg\_send\_request () \#7 0x00000000005c1006 in ring::im::sendSipMessage (session=, payloads=std::map with 1 elements = {...}) at instant\_messaging.cpp:181 \#8 0x000000000055b2e6 in ring::SIPCall::sendTextMessage (this=0x186c2b0, messages=std::map with 1 elements = {...}, from="Me") at sipcall.cpp:674 \#9 0x000000000055b3e3 in ring::SIPCall::sendTextMessage (this=0x181d600, messages=std::map with 1 elements = {...}, from="Me") at sipcall.cpp:671 \#10 0x0000000000512748 in ring::Call::setState (this=this@entry=0x181d600, call\_state=, cnx\_state=cnx\_state@entry=ring::Call::ConnectionState::DISCONNECTED, code=code@entry=0) at call.cpp:173 \#11 0x00000000005130e4 in ring::Call::setState (this=this@entry=0x181d600, cnx\_state=cnx\_state@entry=ring::Call::ConnectionState::DISCONNECTED, code=code@entry=0) at call.cpp:202 \#12 0x00000000005550fd in ring::SIPCall::hangup (this=0x181d600, reason=0) at sipcall.cpp:390 \#13 0x0000000000503eb7 in ring::Manager::hangupCall (this=0x137f240 , callId="14848750495337611551") at manager.cpp:559 \#14 0x0000000000471595 in DRing::hangUp (callID="14848750495337611551") at callmanager.cpp:83 \#15 0x00000000004578b5 in hangUp (callID="14848750495337611551", this=0x1573fa0) at dbuscallmanager.cpp:49 \#16 cx::ring::Ring::CallManager\_adaptor::\_hangUp\_stub (this=0x1573fa0, call=...) at dbuscallmanager.adaptor.h:763 \#17 0x0000000000456d27 in DBus::Callback::call ( this=, param=...) at /usr/include/dbus-c++-1/dbus-c++/util.h:283 \#18 0x00007ffff7bc3640 in DBus::InterfaceAdaptor::dispatch\_method(DBus::CallMessage const&) () from /lib64/libdbus-c++-1.so.0 \#19 0x00007ffff7bcc1e7 in DBus::ObjectAdaptor::handle\_message(DBus::Message const&) () from /lib64/libdbus-c++-1.so.0 \#20 0x00007ffff7bc9f66 in DBus::ObjectAdaptor::Private::message\_function\_stub(DBusConnection\*, DBusMessage\*, void\*) () from /lib64/libdbus-c++-1.so.0 \#21 0x00007ffff7981663 in \_dbus\_object\_tree\_dispatch\_and\_unlock () from /lib64/libdbus-1.so.3 \#22 0x00007ffff7973104 in dbus\_connection\_dispatch () from /lib64/libdbus-1.so.3 \#23 0x00007ffff7bbde73 in DBus::Connection::Private::do\_dispatch() () from /lib64/libdbus-c++-1.so.0 \#24 0x00007ffff7bc074c in DBus::Dispatcher::dispatch\_pending(std::list >&) () from /lib64/libdbus-c++-1.so.0 \#25 0x00007ffff7bc083c in DBus::Dispatcher::dispatch\_pending() () from /lib64/libdbus-c++-1.so.0 \#26 0x00007ffff7bc1f29 in DBus::BusDispatcher::do\_iteration() () from /lib64/libdbus-c++-1.so.0 \#27 0x00007ffff7bc1dbc in DBus::BusDispatcher::enter() () from /lib64/libdbus-c++-1.so.0 \#28 0x000000000044149f in DBusClient::event\_loop (this=) at dbusclient.cpp:235 \#29 0x000000000043c0dc in main (argc=, argv=) at main.cpp:235 (gdb) bt full \#0 0x00000000006792c6 in find\_entry () No symbol table info available. \#1 0x000000000067955b in hash\_set () No symbol table info available. \#2 0x000000000067964b in pj\_hash\_set\_lower () No symbol table info available. \#3 0x000000000062fcee in mod\_tsx\_layer\_register\_tsx () No symbol table info available. \#4 0x00000000006312f6 in pjsip\_tsx\_create\_uac2 () No symbol table info available. \#5 0x0000000000630ebb in pjsip\_tsx\_create\_uac () No symbol table info available. \#6 0x0000000000637c05 in pjsip\_dlg\_send\_request () No symbol table info available. \#7 0x00000000005c1006 in ring::im::sendSipMessage (session=, payloads=std::map with 1 elements = {...}) at instant\_messaging.cpp:181 dialog = 0x1909ca8 dialog\_lock = {dialog\_ = 0x1909ca8} tdata = 0x126c6cce8 status = msg\_method = {id = PJSIP\_OTHER\_METHOD, name = {ptr = 0xe683db "MESSAGE", slen = 7}} \#8 0x000000000055b2e6 in ring::SIPCall::sendTextMessage (this=0x186c2b0, messages=std::map with 1 elements = {...}, from="Me") at sipcall.cpp:674 No locals. \#9 0x000000000055b3e3 in ring::SIPCall::sendTextMessage (this=0x181d600, messages=std::map with 1 elements = {...}, from="Me") at sipcall.cpp:671 \_\_for\_range = std::set with 1 elements = {[0] = warning: RTTI symbol not found for class 'std::\_Sp\_counted\_ptr\_inplace ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall, std::allocator ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall>, (\_\_gnu\_cxx::\_Lock\_policy)2>' warning: RTTI symbol not found for class 'std::\_Sp\_counted\_ptr\_inplace ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall, std::allocator ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall>, (\_\_gnu\_cxx::\_Lock\_policy)2>' std::shared\_ptr (count 4, weak 3) 0x186c2b0} \#10 0x0000000000512748 in ring::Call::setState (this=this@entry=0x181d600, call\_state=, cnx\_state=cnx\_state@entry=ring::Call::ConnectionState::DISCONNECTED, code=code@entry=0) at call.cpp:173 lock = {\_M\_device = @0x181d6b8} old\_client\_state = "RINGING" new\_client\_state = "HUNGUP" \#11 0x00000000005130e4 in ring::Call::setState (this=this@entry=0x181d600, cnx\_state=cnx\_state@entry=ring::Call::ConnectionState::DISCONNECTED, code=code@entry=0) at call.cpp:202 lock = {\_M\_device = @0x181d6b8} \#12 0x00000000005550fd in ring::SIPCall::hangup (this=0x181d600, reason=0) at sipcall.cpp:390 No locals. \#13 0x0000000000503eb7 in ring::Manager::hangupCall (this=0x137f240 , callId="14848750495337611551") at manager.cpp:559 currentCallId = "14848750495337611551" call = warning: RTTI symbol not found for class 'std::\_Sp\_counted\_ptr\_inplace ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall, std::allocator ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall>, (\_\_gnu\_cxx::\_Lock\_policy)2>' warning: RTTI symbol not found for class 'std::\_Sp\_counted\_ptr\_inplace ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall, std::allocator ring::CallFactory::newCall(ring::RingAccount&, std::string const&, ring::Call::CallType)::ConcreteCall>, (\_\_gnu\_cxx::\_Lock\_policy)2>' std::shared\_ptr (count 2, weak 2) 0x181d600 \#14 0x0000000000471595 in DRing::hangUp (callID="14848750495337611551") at callmanager.cpp:83 No locals. \#15 0x00000000004578b5 in hangUp (callID="14848750495337611551", this=0x1573fa0) at dbuscallmanager.cpp:49 No locals. \#16 cx::ring::Ring::CallManager\_adaptor::\_hangUp\_stub (this=0x1573fa0, call=...) at dbuscallmanager.adaptor.h:763 ri = { \_iter = "\\200!W\\001\\000\\000\\000\\000\\000\\000`\\000\\000\\000\\000\\000l\\000\\000\\000\\000\\000\\000\\000\\210!W\\001\\000\\000\\000\\000\\216\\000\\---Type to continue, or q to quit--- 000\\000\\000\\000\\000\\000\\320!W\\001\\000\\000\\000\\000\\031\\000\\000\\000\\000\\000\\000\\000ॺ\\367\\377\\177\\000\\000\\000\\000\\000", \_msg = 0x7fffffffd610} argin1 = "14848750495337611551" argout1 = reply = { = {\_pvt = {\_\_ptr = 0x18cf100, \_\_cnt = {\_vptr.RefCnt = 0x0, \_\_ref = 0x7fffffffd66c}}}, } wi = { \_iter = "\\360\^W\\001\\000\\000\\000\\000\\037\\000\\000\\000\\000\\000\\000\\000@\\325\\377\\377\\377\\177\\000\\000h\\261z\\363\\377\\177\\000\\000\\006\\000\\000\\000\\000\\000\\000\\000\\211\\303\~\\363\\377\\177\\000\\000\\006\\000\\000\\000\\000\\000\\000\\000\\376\\304\~\\363\\377\\177\\000\\000@9W\\001", \_msg = 0x7fffffffd540} \#17 0x0000000000456d27 in DBus::Callback::call ( this=, param=...) at /usr/include/dbus-c++-1/dbus-c++/util.h:283 No locals. \#18 0x00007ffff7bc3640 in DBus::InterfaceAdaptor::dispatch\_method(DBus::CallMessage const&) () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#19 0x00007ffff7bcc1e7 in DBus::ObjectAdaptor::handle\_message(DBus::Message const&) () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#20 0x00007ffff7bc9f66 in DBus::ObjectAdaptor::Private::message\_function\_stub(DBusConnection\*, DBusMessage\*, void\*) () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#21 0x00007ffff7981663 in \_dbus\_object\_tree\_dispatch\_and\_unlock () from /lib64/libdbus-1.so.3 No symbol table info available. \#22 0x00007ffff7973104 in dbus\_connection\_dispatch () from /lib64/libdbus-1.so.3 No symbol table info available. \#23 0x00007ffff7bbde73 in DBus::Connection::Private::do\_dispatch() () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#24 0x00007ffff7bc074c in DBus::Dispatcher::dispatch\_pending(std::list >&) () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#25 0x00007ffff7bc083c in DBus::Dispatcher::dispatch\_pending() () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#26 0x00007ffff7bc1f29 in DBus::BusDispatcher::do\_iteration() () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#27 0x00007ffff7bc1dbc in DBus::BusDispatcher::enter() () from /lib64/libdbus-c++-1.so.0 No symbol table info available. \#28 0x000000000044149f in DBusClient::event\_loop (this=) at dbusclient.cpp:235 No locals. \#29 0x000000000043c0dc in main (argc=, argv=) at main.cpp:235 programName = "/home/sfl1/ring-project/daemon/bin/dring" writable = std::vector of length -22481328, capacity -22481328 = {47 '/', 104 'h', 111 'o', 109 'm', 101 'e', 47 '/', 115 's', 102 'f', 108 'l', 49 '1', 47 '/', 114 'r', 105 'i', 110 'n', 103 'g', 45 '-', 112 'p', 114 'r', 111 'o', 106 'j', 101 'e', 99 'c', 116 't', 47 '/', 100 'd', 97 'a', 101 'e', 109 'm', 111 'o', 110 'n', 47 '/', 98 'b', 105 'i', 110 'n', 0 '\\000', 100 'd', 114 'r', 105 'i', 110 'n', 103 'g', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 1 '\\001', 2 '\\002', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', 0 '\\000', -39 '\\331', -30 '\\342', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -28 '\\344', -30 '\\342', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -8 '\\370', -30 '\\342', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 6 '\\006', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 23 '\\027', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 46 '.', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 84 'T', -29 '\\343', -1 '\\377', -1 '\\377', ---Type to continue, or q to quit--- -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -126 '\\202', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -103 '\\231', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -83 '\\255', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -67 '\\275', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -50 '\\316', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -29 '\\343', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', -15 '\\361', -29 '\\343', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 9 '\ ', -28 '\\344', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 31 '\\037', -28 '\\344', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000', 49 '1', -28 '\\344', -1 '\\377', -1 '\\377', -1 '\\377', 127 '\\177', 0 '\\000', 0 '\\000'...} persistent = false (gdb)