[lit] Speculatively fix PR24554 by manually closing the process handle
authorReid Kleckner <rnk@google.com>
Tue, 25 Aug 2015 16:07:06 +0000 (16:07 +0000)
committerReid Kleckner <rnk@google.com>
Tue, 25 Aug 2015 16:07:06 +0000 (16:07 +0000)
My theory is that somehow Python's refcounting and GC strategy isn't
closing the subprocess handle in a timely fashion.  This accesses the
private '_handle' field of the Popen object, but I see no other way to
do this. If this doesn't address the problem on the sanitizer-windows
buildbot, we can revert this change. If it does, then let's keep the
hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245946 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py

index a49028743253dc82a9ce688c8ef5625eb7d29a2b..610d442e75622ef518acdfe4fe70f99138f0327a 100644 (file)
@@ -257,6 +257,9 @@ def executeShCmd(cmd, shenv, results):
     exitCode = None
     for i,(out,err) in enumerate(procData):
         res = procs[i].wait()
+        # On Windows, manually close the process handles.
+        if kIsWindows:
+            procs[i]._handle.Close()
         # Detect Ctrl-C in subprocess.
         if res == -signal.SIGINT:
             raise KeyboardInterrupt