From e80f435abe1655e7c9fa1e3ae5756d63d262cc35 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Wed, 3 Oct 2018 20:52:26 +0900 Subject: _scheduler/scheduler.py: Ignore interrupt events while terminating. For some reason, we now receive a SIGINT from the main loop even when the SIGINT occurred with the handler disconnected in an interactive prompt. This patch simply ignores any received SIGINT events from the main loop in the case that we are already in the process of terminating. This fixes issue #693 --- buildstream/_scheduler/scheduler.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/buildstream/_scheduler/scheduler.py b/buildstream/_scheduler/scheduler.py index 09af63de5..2975f9758 100644 --- a/buildstream/_scheduler/scheduler.py +++ b/buildstream/_scheduler/scheduler.py @@ -387,6 +387,15 @@ class Scheduler(): # A loop registered event callback for keyboard interrupts # def _interrupt_event(self): + + # FIXME: This should not be needed, but for some reason we receive an + # additional SIGINT event when the user hits ^C a second time + # to inform us that they really intend to terminate; even though + # we have disconnected our handlers at this time. + # + if self.terminated: + return + # Leave this to the frontend to decide, if no # interrrupt callback was specified, then just terminate. if self._interrupt_callback: -- cgit v1.2.1