From c285f8b6cf4adc83396aa89f3105461935c2aff6 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 6 Sep 2020 12:45:27 -0400 Subject: [PATCH] klippy: Improve handling of reactor.run() exceptions Try to invoke a shutdown on an unhandled exception from reactor.run(). If that fails, try to do a clean exit. Signed-off-by: Kevin O'Connor --- klippy/klippy.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/klippy/klippy.py b/klippy/klippy.py index 6cac8099..3d090886 100644 --- a/klippy/klippy.py +++ b/klippy/klippy.py @@ -187,8 +187,17 @@ class Printer: try: self.reactor.run() except: - logging.exception("Unhandled exception during run") - return "error_exit" + msg = "Unhandled exception during run" + logging.exception(msg) + # Exception from a reactor callback - try to shutdown + try: + self.reactor.register_callback((lambda e: + self.invoke_shutdown(msg))) + self.reactor.run() + except: + logging.exception("Repeat unhandled exception during run") + # Another exception - try to exit + self.run_result = "error_exit" # Check restart flags run_result = self.run_result try: