diff options
author | Jürg Billeter <j@bitron.ch> | 2018-05-21 11:29:54 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2018-05-31 10:34:26 +0200 |
commit | b964008f3b3be2afcac90e36763f42aee8b68f0a (patch) | |
tree | ae420ad8c9c608e8242fd08938c7e025e54411b7 | |
parent | ae9aab02a9c2a469040bb8aaf4bc54924924eb0d (diff) | |
download | buildstream-b964008f3b3be2afcac90e36763f42aee8b68f0a.tar.gz |
_signals.py: Guard against use in non-main thread
-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 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) |