From 2ebf2af44f747b230041f347e2a2ab035a28e656 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 5 Apr 2025 12:57:01 +0530 Subject: [PATCH] More robust atexit worker close --- src/calibre/utils/safe_atexit.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/calibre/utils/safe_atexit.py b/src/calibre/utils/safe_atexit.py index 2beb36e917..bd85806563 100644 --- a/src/calibre/utils/safe_atexit.py +++ b/src/calibre/utils/safe_atexit.py @@ -47,15 +47,22 @@ def unlink(path): oss.remove(path) +def close_worker(worker): + import subprocess + worker.stdin.close() + try: + worker.wait(10) + except subprocess.TimeoutExpired: + worker.kill() + worker.wait() + + def ensure_worker(): global worker if worker is None: from calibre.utils.ipc.simple_worker import start_pipe_worker worker = start_pipe_worker('from calibre.utils.safe_atexit import main; main()', stdout=None) - def close_worker(): - worker.stdin.close() - worker.wait(10) - atexit.register(close_worker) + atexit.register(close_worker, worker) return worker