From 13c07c62d14f3f73e56e1c29b98f244fa3519e4f Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 20 Jun 2018 14:54:34 +0000 Subject: 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 --- .../test/functionalities/thread/num_threads/TestNumThreads.py | 3 ++- .../lldbsuite/test/functionalities/thread/num_threads/main.cpp | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads') 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 lock(mutex); // Set thread3 break point on lock at this line. + + int dummy = 47; // thread3-before-lock + + std::unique_lock lock(mutex); cond.notify_all(); // Set thread3 break point on notify_all at this line. return NULL; } -- cgit v1.2.3