summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2018-05-21 11:29:54 +0200
committerJürg Billeter <j@bitron.ch>2018-05-31 10:34:26 +0200
commitb964008f3b3be2afcac90e36763f42aee8b68f0a (patch)
treeae420ad8c9c608e8242fd08938c7e025e54411b7
parentae9aab02a9c2a469040bb8aaf4bc54924924eb0d (diff)
downloadbuildstream-b964008f3b3be2afcac90e36763f42aee8b68f0a.tar.gz
_signals.py: Guard against use in non-main thread
-rw-r--r--buildstream/_signals.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/buildstream/_signals.py b/buildstream/_signals.py
index 9749e0d1a..06849c9f9 100644
--- a/buildstream/_signals.py
+++ b/buildstream/_signals.py
@@ -20,6 +20,7 @@
import os
import signal
import sys
+import threading
import traceback
from contextlib import contextmanager, ExitStack
from collections import deque
@@ -72,6 +73,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)