summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-06-20 14:54:34 +0000
committerPavel Labath <labath@google.com>2018-06-20 14:54:34 +0000
commit13c07c62d14f3f73e56e1c29b98f244fa3519e4f (patch)
tree9255662677540a482230757ecd84b4eb71479518 /lldb/packages/Python
parentd65492abf79638a417dfebdaf061e097fe033943 (diff)
downloadbcm5719-llvm-13c07c62d14f3f73e56e1c29b98f244fa3519e4f.tar.gz
bcm5719-llvm-13c07c62d14f3f73e56e1c29b98f244fa3519e4f.zip
Make sure TestNumThreads works with libc++
The problem was that with libc++ the std::unique_lock declaration was completely inlined, so there was no line table entry in the main.cpp file to set a breakpoint on. Therefore, the breakpoint got moved to the next line, but that meant the test would deadlock as the thread would stop with the lock already held. I fix that issue by adding a dummy statement before the std::unique_lock line to anchor the breakpoint. I think this should fix the issue because of which this test was disabled on darwin, but someone should verify that before enabling it. llvm-svn: 335132
Diffstat (limited to 'lldb/packages/Python')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py3
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/main.cpp5
2 files changed, 6 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py
index 663464346a2..4c4e645635c 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py
@@ -16,13 +16,14 @@ import lldbsuite.test.lldbutil as lldbutil
class NumberOfThreadsTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
+ NO_DEBUG_INFO_TESTCASE = True
def setUp(self):
# Call super's setUp().
TestBase.setUp(self)
# Find the line numbers for our break points.
self.thread3_notify_all_line = line_number('main.cpp', '// Set thread3 break point on notify_all at this line.')
- self.thread3_before_lock_line = line_number('main.cpp', '// Set thread3 break point on lock at this line.')
+ self.thread3_before_lock_line = line_number('main.cpp', '// thread3-before-lock')
def test_number_of_threads(self):
"""Test number of threads."""
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/main.cpp
index 42a07f35303..fdc060d135d 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/main.cpp
@@ -12,7 +12,10 @@ void *
thread3(void *input)
{
pseudo_barrier_wait(thread3_barrier);
- std::unique_lock<std::mutex> lock(mutex); // Set thread3 break point on lock at this line.
+
+ int dummy = 47; // thread3-before-lock
+
+ std::unique_lock<std::mutex> lock(mutex);
cond.notify_all(); // Set thread3 break point on notify_all at this line.
return NULL;
}
OpenPOWER on IntegriCloud