diff options
author | Pavel Labath <labath@google.com> | 2018-06-20 14:54:34 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2018-06-20 14:54:34 +0000 |
commit | 13c07c62d14f3f73e56e1c29b98f244fa3519e4f (patch) | |
tree | 9255662677540a482230757ecd84b4eb71479518 /lldb/packages/Python/lldbsuite/test/functionalities | |
parent | d65492abf79638a417dfebdaf061e097fe033943 (diff) | |
download | bcm5719-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/lldbsuite/test/functionalities')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py | 3 | ||||
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/main.cpp | 5 |
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; } |