Message ID | 20250303130628.1656131-3-richard.purdie@linuxfoundation.org |
---|---|
State | Accepted, archived |
Commit | a097755c671e2b530dea6200a94b39fa9dca246c |
Headers | show |
Series | [1/4] utils: Print information about lock issue before exiting | expand |
diff --git a/lib/bb/utils.py b/lib/bb/utils.py index 992e200641..3a4b29181e 100644 --- a/lib/bb/utils.py +++ b/lib/bb/utils.py @@ -1882,6 +1882,7 @@ def path_is_descendant(descendant, ancestor): @contextmanager def lock_timeout(lock): try: + s = signal.pthread_sigmask(signal.SIG_BLOCK, signal.valid_signals()) held = lock.acquire(timeout=5*60) if not held: bb.server.process.serverlog("Couldn't get the lock for 5 mins, timed out, exiting.\n%s" % traceback.format_stack()) @@ -1889,3 +1890,4 @@ def lock_timeout(lock): yield held finally: lock.release() + signal.pthread_sigmask(signal.SIG_SETMASK, s)
We never want to exit whilst holding these locks as it deadlocks all python threads. Add signal blocking around the lock critical part so a signal shouldn't cause such an exit. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- lib/bb/utils.py | 2 ++ 1 file changed, 2 insertions(+)