From: Sean Wilson Date: Fri, 17 Aug 2018 22:48:34 +0000 (-0500) Subject: testlib: No catch of custom exceptions in sandbox X-Git-Tag: v19.0.0.0~1877 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c7c0678cc6c400bc91af2a838dd26356320bc2d2;p=gem5.git testlib: No catch of custom exceptions in sandbox Custom exceptions are not always properly pickled which could lead to the sandbox test executor to crash when it tries to re __init__ pickled exceptions thrown from the failed test. Change-Id: I4e2ffe5802dda668b5d61c5a16e0989717121a04 Signed-off-by: Sean Wilson Reviewed-on: https://gem5-review.googlesource.com/12167 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- diff --git a/ext/testlib/sandbox.py b/ext/testlib/sandbox.py index 7f8fe2d3b..49fe133ea 100644 --- a/ext/testlib/sandbox.py +++ b/ext/testlib/sandbox.py @@ -133,18 +133,16 @@ class IoManager(object): class SubprocessException(Exception): - def __init__(self, exception, trace): + def __init__(self, trace): super(SubprocessException, self).__init__(trace) class ExceptionProcess(multiprocessing.Process): - class Status(): + class Status(object): def __init__(self, exitcode, exception_tuple): self.exitcode = exitcode if exception_tuple is not None: - self.trace = exception_tuple[1] - self.exception = exception_tuple[0] + self.trace = exception_tuple[0] else: - self.exception = None self.trace = None def __init__(self, *args, **kwargs): @@ -156,9 +154,9 @@ class ExceptionProcess(multiprocessing.Process): try: super(ExceptionProcess, self).run() self._cconn.send(None) - except Exception as e: + except Exception: tb = traceback.format_exc() - self._cconn.send((e, tb)) + self._cconn.send((tb, )) raise @property @@ -186,7 +184,7 @@ class Sandbox(object): status = self.p.status if status.exitcode: - raise SubprocessException(status.exception, status.trace) + raise SubprocessException(status.trace) def entrypoint(self): self.io_manager.setup()