From dd1920df19bf45980e22fd0b12b479e5cd6ae3aa Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 30 May 2021 16:47:28 +0100 Subject: [PATCH] Fixed bug with SignalHandler ignoring shutdown requests that occurred pre-startup. --- src/SignalHandler/SignalHandler.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/SignalHandler/SignalHandler.cpp b/src/SignalHandler/SignalHandler.cpp index 465cb23b..0dafb663 100644 --- a/src/SignalHandler/SignalHandler.cpp +++ b/src/SignalHandler/SignalHandler.cpp @@ -34,6 +34,7 @@ void SignalHandler::run() { void SignalHandler::startup() { this->setName("SH"); + Thread::setThreadState(ThreadState::STARTING); Logger::debug("Starting SignalHandler"); // Block all signal interrupts auto signalSet = this->getRegisteredSignalSet(); @@ -50,7 +51,10 @@ void SignalHandler::startup() { std::bind(&SignalHandler::triggerApplicationShutdown, this) )); - Thread::setState(ThreadState::READY); + // It's possible that the SignalHandler has been instructed to shutdown, before it could finish starting up. + if (this->getThreadState() != ThreadState::SHUTDOWN_INITIATED) { + Thread::setThreadState(ThreadState::READY); + } } sigset_t SignalHandler::getRegisteredSignalSet() const {