Author: tfiala
Date: Fri Apr 25 16:09:28 2014
New Revision: 207273

URL: http://llvm.org/viewvc/llvm-project?rev=207273&view=rev
Log:
Prevent TestLldbGdbServer shutdown cleanup failures from failing the test.

Adds try/except blocks around clean-up code. Prevents a race between gdb
remote kill command reception by llgs (which leads llgs to shut down)
and the pexpect server kill (which can fail if the kill command handling
completes first). Warnings are emitted on the logger for any clean-up
code that fails.


Modified:
    lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py

Modified: lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py?rev=207273&r1=207272&r2=207273&view=diff
==============================================================================
--- lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py (original)
+++ lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py Fri Apr 25 
16:09:28 2014
@@ -36,12 +36,20 @@ class LldbGdbServerTestCase(TestBase):
 
     def create_socket(self):
         sock = socket.socket()
+        logger = self.logger
 
         def shutdown_socket():
             if sock:
-                # send the kill packet so lldb-gdbserver shuts down gracefully
-                sock.sendall(LldbGdbServerTestCase._GDBREMOTE_KILL_PACKET)
-                sock.close()
+                try:
+                    # send the kill packet so lldb-gdbserver shuts down 
gracefully
+                    sock.sendall(LldbGdbServerTestCase._GDBREMOTE_KILL_PACKET)
+                except:
+                    logger.warning("failed to send kill packet to debug 
monitor: {}; ignoring".format(sys.exc_info()[0]))
+
+                try:
+                    sock.close()
+                except:
+                    logger.warning("failed to close socket to debug monitor: 
{}; ignoring".format(sys.exc_info()[0]))
 
         self.addTearDownHook(shutdown_socket)
 
@@ -57,8 +65,13 @@ class LldbGdbServerTestCase(TestBase):
             server.logfile_read = sys.stdout
 
         # Schedule lldb-gdbserver to be shutting down during teardown.
+        logger = self.logger
         def shutdown_lldb_gdbserver():
-            server.close()
+            try:
+                server.close()
+            except:
+                logger.warning("failed to close pexpect server for debug 
monitor: {}; ignoring".format(sys.exc_info()[0]))
+
         self.addTearDownHook(shutdown_lldb_gdbserver)
 
         # Wait until we receive the server ready message before continuing.


_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to