tfiala created this revision.
tfiala added a reviewer: jingham.
tfiala added a subscriber: lldb-commits.

This change addresses a hang/segfault in TestEvents.py.  The threads that run 
the listener loops now do an SBListener.Clear() before they wrap up their work. 
 This prevents the test from trying to clean up the SBListener too late.

There is a separate issue here which is that we should prevent this clean-up 
time lock-up, but that is out of scope for this particular change.  I'd like to 
get these tests back and running the normal flow rather than skipping them.

http://reviews.llvm.org/D19983

Files:
  packages/Python/lldbsuite/test/python_api/event/TestEvents.py

Index: packages/Python/lldbsuite/test/python_api/event/TestEvents.py
===================================================================
--- packages/Python/lldbsuite/test/python_api/event/TestEvents.py
+++ packages/Python/lldbsuite/test/python_api/event/TestEvents.py
@@ -13,7 +13,6 @@
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test import lldbutil
 
-@skipIfDarwin  # llvm.org/pr25924, sometimes generating SIGSEGV
 @skipIfLinux   # llvm.org/pr25924, sometimes generating SIGSEGV
 class EventAPITestCase(TestBase):
 
@@ -86,6 +85,7 @@
                         if traceOn:
                             print("timeout occurred waiting for event...")
                     count = count + 1
+                listener.Clear()
                 return
 
         # Let's start the listening thread to retrieve the events.
@@ -103,6 +103,8 @@
         # Wait until the 'MyListeningThread' terminates.
         my_thread.join()
 
+        # Shouldn't we be testing against some kind of expectation here?
+
     @add_test_categories(['pyapi'])
     @expectedFlakeyLinux("llvm.org/pr23730") # Flaky, fails ~1/100 cases
     def test_wait_for_event(self):
@@ -155,10 +157,11 @@
                         #print("Got a valid event:", event)
                         #print("Event data flavor:", event.GetDataFlavor())
                         #print("Event type:", 
lldbutil.state_type_to_str(event.GetType()))
+                        listener.Clear()
                         return
                     count = count + 1
                     print("Timeout: listener.WaitForEvent")
-
+                listener.Clear()
                 return
 
         # Use Python API to kill the process.  The listening thread should be
@@ -266,7 +269,7 @@
                     count = count + 1
                     if count > 6:
                         break
-
+                listener.Clear()
                 return
 
         # Use Python API to continue the process.  The listening thread should 
be


Index: packages/Python/lldbsuite/test/python_api/event/TestEvents.py
===================================================================
--- packages/Python/lldbsuite/test/python_api/event/TestEvents.py
+++ packages/Python/lldbsuite/test/python_api/event/TestEvents.py
@@ -13,7 +13,6 @@
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test import lldbutil
 
-@skipIfDarwin  # llvm.org/pr25924, sometimes generating SIGSEGV
 @skipIfLinux   # llvm.org/pr25924, sometimes generating SIGSEGV
 class EventAPITestCase(TestBase):
 
@@ -86,6 +85,7 @@
                         if traceOn:
                             print("timeout occurred waiting for event...")
                     count = count + 1
+                listener.Clear()
                 return
 
         # Let's start the listening thread to retrieve the events.
@@ -103,6 +103,8 @@
         # Wait until the 'MyListeningThread' terminates.
         my_thread.join()
 
+        # Shouldn't we be testing against some kind of expectation here?
+
     @add_test_categories(['pyapi'])
     @expectedFlakeyLinux("llvm.org/pr23730") # Flaky, fails ~1/100 cases
     def test_wait_for_event(self):
@@ -155,10 +157,11 @@
                         #print("Got a valid event:", event)
                         #print("Event data flavor:", event.GetDataFlavor())
                         #print("Event type:", lldbutil.state_type_to_str(event.GetType()))
+                        listener.Clear()
                         return
                     count = count + 1
                     print("Timeout: listener.WaitForEvent")
-
+                listener.Clear()
                 return
 
         # Use Python API to kill the process.  The listening thread should be
@@ -266,7 +269,7 @@
                     count = count + 1
                     if count > 6:
                         break
-
+                listener.Clear()
                 return
 
         # Use Python API to continue the process.  The listening thread should be
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to