diff --git a/src/Debug/DebugHook.py b/src/Debug/DebugHook.py index f27cae64..ce531df4 100644 --- a/src/Debug/DebugHook.py +++ b/src/Debug/DebugHook.py @@ -50,7 +50,7 @@ def handleErrorNotify(*args, **kwargs): if err.__name__ == "KeyboardInterrupt": shutdown("Keyboard interrupt") elif err.__name__ != "Notify": - logging.error("Unhandled exception 3: %s" % Debug.formatException()) + logging.error("Unhandled exception: %s" % Debug.formatException(args)) sys.__excepthook__(*args, **kwargs) @@ -73,15 +73,16 @@ else: gevent.Greenlet = gevent.greenlet.Greenlet = ErrorhookedGreenlet importlib.reload(gevent) -def handleGreenletError(self, context, type, value, tb): +def handleGreenletError(context, type, value, tb): if isinstance(value, str): # Cython can raise errors where the value is a plain string # e.g., AttributeError, "_semaphore.Semaphore has no attr", value = type(value) - if not issubclass(type, self.NOT_ERROR): + + if not issubclass(type, gevent.get_hub().NOT_ERROR): sys.excepthook(type, value, tb) -gevent.hub.Hub.handle_error = handleGreenletError +gevent.get_hub().handle_error = handleGreenletError try: signal.signal(signal.SIGTERM, lambda signum, stack_frame: shutdown("SIGTERM"))