daemon: crash when coming back from suspend
Issue generated from Tuleap's migration script. Originally submitted by: Stepan Salenikovich (ssalenik)
I notice often after suspending and then resuming my laptop, if I left ring-daemon running (in gdb), it crashes with this assert:
dring: ../src/pj/os\_core\_unix.c:1309: pj\_mutex\_unlock: Assertion `mutex->owner == pj\_thread\_this()' failed.
Thread 1 "dring" received signal SIGABRT, Aborted.
\_\_GI\_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
58 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
\#0 \_\_GI\_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
\#1 0x00007ffff2dc23ea in \_\_GI\_abort () at abort.c:89
\#2 0x00007ffff2db8bb7 in \_\_assert\_fail\_base (fmt=<optimized out>, assertion=assertion@entry=0x555556179ff0 "mutex->owner == pj\_thread\_this()", file=file@entry=0x555556179d78 "../src/pj/os\_core\_unix.c",
line=line@entry=1309, function=function@entry=0x55555617a1d0 <\_\_PRETTY\_FUNCTION\_\_.5562> "pj\_mutex\_unlock") at assert.c:92
\#3 0x00007ffff2db8c62 in \_\_GI\_\_\_assert\_fail (assertion=0x555556179ff0 "mutex->owner == pj\_thread\_this()", file=0x555556179d78 "../src/pj/os\_core\_unix.c", line=1309,
function=0x55555617a1d0 <\_\_PRETTY\_FUNCTION\_\_.5562> "pj\_mutex\_unlock") at assert.c:101
\#4 0x0000555555a1fd6e in pj\_mutex\_unlock (mutex=0x555557203f38) at ../src/pj/os\_core\_unix.c:1309
\#5 0x0000555555a1f6de in pj\_atomic\_inc\_and\_get (atomic\_var=0x555557203f28) at ../src/pj/os\_core\_unix.c:939
\#6 0x0000555555a1f6fc in pj\_atomic\_inc (atomic\_var=0x555557203f28) at ../src/pj/os\_core\_unix.c:949
\#7 0x00005555559c801c in pjsip\_tx\_data\_add\_ref (tdata=0x555557203a48) at ../src/pjsip/sip\_transport.c:478
\#8 0x00005555559c8e8c in pjsip\_transport\_send (tr=0x55555690edd8, tdata=0x555557203a48, addr=0x555556c83bb4, addr\_len=16, token=0x555556c83ad8, cb=0x5555559da9d6 <transport\_callback>)
at ../src/pjsip/sip\_transport.c:842
\#9 0x00005555559dae36 in tsx\_send\_msg (tsx=0x555556c83ad8, tdata=0x555557203a48) at ../src/pjsip/sip\_transaction.c:2078
\#10 0x00005555559db607 in tsx\_retransmit (tsx=0x555556c83ad8, resched=1) at ../src/pjsip/sip\_transaction.c:2318
\#11 0x00005555559dba74 in tsx\_on\_state\_calling (tsx=0x555556c83ad8, event=0x7fffffffd350) at ../src/pjsip/sip\_transaction.c:2449
\#12 0x00005555559d8e20 in tsx\_timer\_callback (theap=0x555556962288, entry=0x555556c83c58) at ../src/pjsip/sip\_transaction.c:1171
\#13 0x0000555555a35bd1 in pj\_timer\_heap\_poll (ht=0x555556962288, next\_delay=0x7fffffffd490) at ../src/pj/timer.c:643
\#14 0x00005555559c0db8 in pjsip\_endpt\_handle\_events2 (endpt=0x555556961f68, max\_timeout=0x555556145a90 <ring::SIPVoIPLink::handleEvents()::timeout>, p\_count=0x0) at ../src/pjsip/sip\_endpoint.c:712
\#15 0x00005555559c0f2f in pjsip\_endpt\_handle\_events (endpt=0x555556961f68, max\_timeout=0x555556145a90 <ring::SIPVoIPLink::handleEvents()::timeout>) at ../src/pjsip/sip\_endpoint.c:769
\#16 0x00005555558b354e in ring::SIPVoIPLink::handleEvents (this=0x555556960880) at sipvoiplink.cpp:686
\#17 0x00005555558b1a1d in ring::SIPVoIPLink::<lambda()>::operator()(void) const (\_\_closure=0x555556903af8) at sipvoiplink.cpp:581
\#18 0x00005555558b678c in std::\_Function\_handler<void(), ring::SIPVoIPLink::SIPVoIPLink()::<lambda()> >::\_M\_invoke(const std::\_Any\_data &) (\_\_functor=...) at /usr/include/c++/6/functional:1740
\#19 0x0000555555655f56 in std::function<void ()>::operator()() const (this=0x555556903af8) at /usr/include/c++/6/functional:2136
\#20 0x00005555558184a6 in ring::Manager::pollEvents (this=0x55555676e080 <ring::Manager::instance()::instance>) at manager.cpp:1703
\#21 0x00005555556b650c in DRing::pollEvents () at ring\_api.cpp:85
\#22 0x0000555555665784 in std::\_Function\_handler<void (), void (\*)()>::\_M\_invoke(std::\_Any\_data const&) (\_\_functor=...) at /usr/include/c++/6/functional:1740
\#23 0x0000555555655f56 in std::function<void ()>::operator()() const (this=0x5555568ed418) at /usr/include/c++/6/functional:2136
\#24 0x0000555555654d50 in EventCallback::call (this=0x5555568ed410) at dbusclient.cpp:59
\#25 0x00007ffff7bbdae3 in DBus::DefaultMainLoop::dispatch() () from /usr/lib/x86\_64-linux-gnu/libdbus-c++-1.so.0
\#26 0x00007ffff7bbe78c in DBus::BusDispatcher::enter() () from /usr/lib/x86\_64-linux-gnu/libdbus-c++-1.so.0
\#27 0x0000555555650cda in DBusClient::event\_loop (this=0x5555568ecfe0) at dbusclient.cpp:241
\#28 0x000055555564c5d6 in main (argc=3, argv=0x7fffffffdde8) at main.cpp:235