diff options
-rw-r--r-- | buildstream/_signals.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/buildstream/_signals.py b/buildstream/_signals.py index f1e520d37..0035485a5 100644 --- a/buildstream/_signals.py +++ b/buildstream/_signals.py @@ -19,6 +19,7 @@ import os import signal import sys +import threading import traceback from contextlib import contextmanager, ExitStack from collections import deque @@ -71,6 +72,11 @@ def terminator_handler(signal_, frame): def terminator(terminate_func): global terminator_stack # pylint: disable=global-statement + # Signal handling only works in the main thread + if threading.current_thread() != threading.main_thread(): + yield + return + outermost = False if terminator_stack else True terminator_stack.append(terminate_func) |