diff --git a/src/event/SignalMonitor.cxx b/src/event/SignalMonitor.cxx
index 71f603904..5c34d2057 100644
--- a/src/event/SignalMonitor.cxx
+++ b/src/event/SignalMonitor.cxx
@@ -147,7 +147,7 @@ x_sigaction(int signum, const struct sigaction &act)
 #endif
 
 void
-SignalMonitorFinish()
+SignalMonitorFinish() noexcept
 {
 #ifdef USE_SIGNALFD
 	std::fill_n(signal_handlers, MAX_SIGNAL, nullptr);
@@ -159,7 +159,7 @@ SignalMonitorFinish()
 
 	for (unsigned i = 0; i < MAX_SIGNAL; ++i) {
 		if (signal_handlers[i]) {
-			x_sigaction(i, sa);
+			sigaction(i, &sa, nullptr);
 			signal_handlers[i] = nullptr;
 		}
 	}
diff --git a/src/event/SignalMonitor.hxx b/src/event/SignalMonitor.hxx
index 1930b3bcb..734977ec1 100644
--- a/src/event/SignalMonitor.hxx
+++ b/src/event/SignalMonitor.hxx
@@ -42,7 +42,7 @@ SignalMonitorInit(EventLoop &loop);
  * Deinitialise the signal monitor subsystem.
  */
 void
-SignalMonitorFinish();
+SignalMonitorFinish() noexcept;
 
 /**
  * Register a handler for the specified signal.  The handler will be