daemon: SEGFAULT in ringaccount if (un)registered called too often
Issue generated from Tuleap's migration script. Originally submitted by: Stepan Salenikovich (ssalenik)
Calling (un)register too fast (before the first register has completed it seems) causes a segfault
[1468515492.007|18140|configurationmanager.cpp:796] received connectivity changed - trying to re-connect enabled accounts [Thread 0x7fffd6b6d700 (LWP 18155) exited] [1468515492.245|18140|ringaccount.cpp:771 ] UPnP: waiting for IGD to register RING account [New Thread 0x7fffd6b6d700 (LWP 18248)] [1468515492.245|18140|configurationmanager.cpp:796] received connectivity changed - trying to re-connect enabled accounts [1468515492.245|18248|upnp\_context.cpp:208 ] UPnP: check for valid IGD timeout [1468515492.245|18140|ringaccount.cpp:771 ] UPnP: waiting for IGD to register RING account [New Thread 0x7fffd8582700 (LWP 18249)] [1468515492.245|18249|upnp\_context.cpp:208 ] UPnP: check for valid IGD timeout [1468515492.246|18140|configurationmanager.cpp:796] received connectivity changed - trying to re-connect enabled accounts [1468515492.246|18140|ringaccount.cpp:771 ] UPnP: waiting for IGD to register RING account [New Thread 0x7fffdb588700 (LWP 18250)] [1468515492.246|18140|configurationmanager.cpp:796] received connectivity changed - trying to re-connect enabled accounts [1468515492.246|18250|upnp\_context.cpp:208 ] UPnP: check for valid IGD timeout [1468515492.246|18140|ringaccount.cpp:771 ] UPnP: waiting for IGD to register RING account [New Thread 0x7fffd7b6f700 (LWP 18251)] [1468515492.247|18140|configurationmanager.cpp:796] received connectivity changed - trying to re-connect enabled accounts [1468515492.247|18251|upnp\_context.cpp:208 ] UPnP: check for valid IGD timeout [1468515492.247|18251|ringaccount.cpp:798 ] DHT already running (stopping it first). [New Thread 0x7fffd736e700 (LWP 18252)] Thread 20 "dring" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffd8582700 (LWP 18249)] 0x0000000000631d75 in dht::DhtRunner::setLocalCertificateStore(std::function, std::allocator > > (dht::InfoHash const&)>&&) () (gdb) bt \#0 0x0000000000631d75 in dht::DhtRunner::setLocalCertificateStore(std::function, std::allocator > > (dht::InfoHash const&)>&&) () \#1 0x0000000000488def in ring::RingAccount::doRegister\_ (this=0xb1fb00) at ringaccount.cpp:833 \#2 0x00007ffff2fd4c80 in ?? () from /usr/lib/x86\_64-linux-gnu/libstdc++.so.6 \#3 0x00007ffff5ad26fa in start\_thread (arg=0x7fffd8582700) at pthread\_create.c:333 \#4 0x00007ffff273ab5d in clone () at ../sysdeps/unix/sysv/linux/x86\_64/clone.S:109