base: disarm atexit handling for signal thread

The signal thread is not supposed to be destructed in any scenario other
than the noux fork mechanism (where no signals occur).

Issue #3578
This commit is contained in:
Norman Feske 2019-12-06 14:16:55 +01:00 committed by Christian Helmuth
parent 4e57b6eceb
commit 6858270517

View File

@ -23,6 +23,7 @@
/* base-internal includes */ /* base-internal includes */
#include <base/internal/globals.h> #include <base/internal/globals.h>
#include <base/internal/unmanaged_singleton.h>
#include <signal_source/client.h> #include <signal_source/client.h>
using namespace Genode; using namespace Genode;
@ -69,6 +70,7 @@ class Signal_handler_thread : Thread, Lock
~Signal_handler_thread() ~Signal_handler_thread()
{ {
log("~Signal_handler_thread");
env_deprecated()->pd_session()->free_signal_source(_signal_source->rpc_cap()); env_deprecated()->pd_session()->free_signal_source(_signal_source->rpc_cap());
} }
}; };
@ -81,8 +83,7 @@ class Signal_handler_thread : Thread, Lock
*/ */
static Constructible<Signal_handler_thread> & signal_handler_thread() static Constructible<Signal_handler_thread> & signal_handler_thread()
{ {
static Constructible<Signal_handler_thread> inst; return *unmanaged_singleton<Constructible<Signal_handler_thread> >();
return inst;
} }