[Lldb-commits] [PATCH] D52139: [lldb-mi] Fix hanging of target-select-so-path.test

Alexander Polyakov via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Sep 20 11:41:24 PDT 2018


apolyakov updated this revision to Diff 166337.
apolyakov edited the summary of this revision.
apolyakov added a comment.

Thanks to @tatyana-krasnukha for the idea about a timer. Added a timer to target-select-so-path test.


https://reviews.llvm.org/D52139

Files:
  lit/tools/lldb-mi/target/inputs/target-select-so-path.py


Index: lit/tools/lldb-mi/target/inputs/target-select-so-path.py
===================================================================
--- lit/tools/lldb-mi/target/inputs/target-select-so-path.py
+++ lit/tools/lldb-mi/target/inputs/target-select-so-path.py
@@ -3,6 +3,7 @@
 import os
 import sys
 import subprocess
+from threading import Timer
 
 
 hostname = 'localhost'
@@ -19,21 +20,28 @@
 debugserver_proc = subprocess.Popen(debugserver.split())
 lldbmi_proc = subprocess.Popen(lldbmi, stdin=subprocess.PIPE,
                                stdout=subprocess.PIPE, shell=True)
-filecheck_proc = subprocess.Popen(filecheck, stdin=lldbmi_proc.stdout,
+filecheck_proc = subprocess.Popen(filecheck, stdin=subprocess.PIPE,
                                   shell=True)
 
-# Get a tcp port chosen by debugserver.
-# The number quite big to get lldb-server's output and to not hang.
-bytes_to_read = 10
-port_bytes = os.read(r, bytes_to_read)
-port = str(port_bytes.decode('utf-8').strip('\x00'))
-
-with open(test_file, 'r') as f:
-    # Replace '$PORT' with a free port number and pass
-    # test's content to lldb-mi.
-    lldbmi_proc.stdin.write(f.read().replace('$PORT', port))
-    lldbmi_proc.wait()
-    filecheck_proc.wait()
+timeout_sec = 120
+timer = Timer(timeout_sec, lldbmi_proc.kill)
+try:
+    timer.start()
+
+    # Get a tcp port chosen by debugserver.
+    # The number quite big to get lldb-server's output and to not hang.
+    bytes_to_read = 10
+    port_bytes = os.read(r, bytes_to_read)
+    port = str(port_bytes.decode('utf-8').strip('\x00'))
+
+    with open(test_file, 'r') as f:
+        # Replace '$PORT' with a free port number and pass
+        # test's content to lldb-mi.
+        lldbmi_proc.stdin.write(f.read().replace('$PORT', port))
+        out, err = lldbmi_proc.communicate()
+        filecheck_proc.stdin.write(out)
+finally:
+    timer.cancel()
 
 debugserver_proc.kill()
 exit(filecheck_proc.returncode)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52139.166337.patch
Type: text/x-patch
Size: 1946 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180920/6976f2d0/attachment.bin>


More information about the lldb-commits mailing list