From fa0b3854a41a6b8279cd7b3d2fe0f0b6b7ba6d22 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 7 Dec 2012 15:47:49 +0530 Subject: [PATCH] More robust error handling for simple_worker --- src/calibre/utils/ipc/simple_worker.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/calibre/utils/ipc/simple_worker.py b/src/calibre/utils/ipc/simple_worker.py index ca84f9d84d..86bddb38ab 100644 --- a/src/calibre/utils/ipc/simple_worker.py +++ b/src/calibre/utils/ipc/simple_worker.py @@ -48,7 +48,7 @@ class ConnectedWorker(Thread): try: eintr_retry_call(conn.send, self.args) self.res = eintr_retry_call(conn.recv) - except: + except BaseException: self.tb = traceback.format_exc() def communicate(ans, worker, listener, args, timeout=300, heartbeat=None, @@ -77,6 +77,8 @@ def communicate(ans, worker, listener, args, timeout=300, heartbeat=None, if cw.tb: raise WorkerError('Failed to communicate with worker process') + if cw.res is None: + raise WorkerError('Something strange happened. The worker process was aborted without an exception.') if cw.res.get('tb', None): raise WorkerError('Worker failed', cw.res['tb']) ans['result'] = cw.res['result']