[debuginfo-tests] Warn, not error, if we can't delete working directory
authorJeremy Morse <jeremy.morse@sony.com>
Tue, 25 Feb 2020 13:12:13 +0000 (13:12 +0000)
committerJeremy Morse <jeremy.morse@sony.com>
Tue, 25 Feb 2020 13:15:07 +0000 (13:15 +0000)
On Windows, an error running the debugger typically leaves a process
hanging around in the working directory. When Dexter exits, it can't then
delete the working directory and produces an exception, masking the problem
in the debugger. (This can be worked around by specifying --save-temps).
Rather than hard-erroring, print a warning when we can't delete the working
directory instead.

It'd be much better to improve our error handling, and make the
WorkingDirectory class aware that something's wrong when it enters exit.
However, this is something that's going to mask genuine errors and make
everyones lives harder right now, so I think this non-ideal fix is
important to get in first.

Differential Revision: https://reviews.llvm.org/D74548

debuginfo-tests/dexter/dex/utils/WorkingDirectory.py

index e1862f2..04f9b64 100644 (file)
@@ -12,7 +12,7 @@ import tempfile
 import time
 
 from dex.utils.Exceptions import Error
-
+from dex.utils.Warning import warn
 
 class WorkingDirectory(object):
     def __init__(self, context, *args, **kwargs):
@@ -35,12 +35,12 @@ class WorkingDirectory(object):
                 self.path))
             return
 
-        exception = AssertionError('should never be raised')
         for _ in range(100):
             try:
                 shutil.rmtree(self.path)
                 return
-            except OSError as e:
-                exception = e
+            except OSError:
                 time.sleep(0.1)
-        raise Error(exception)
+
+        warn(self.context, '"{}" left in place (couldn\'t delete)\n'.format(self.path))
+        return