Author: Pavel Labath Date: 2021-04-21T17:37:30+02:00 New Revision: 55ee541653a817c77a6b5b837c4b8cc50ed3ae0e
URL: https://github.com/llvm/llvm-project/commit/55ee541653a817c77a6b5b837c4b8cc50ed3ae0e DIFF: https://github.com/llvm/llvm-project/commit/55ee541653a817c77a6b5b837c4b8cc50ed3ae0e.diff LOG: [lldb/test] Clean up TestThreadSpecificBpPlusCondition inferior The test had a race that could cause two threads to end up with the same "thread local" value. I believe this would not cause the test to fail, but it could cause it to succeed even when the functionality is broken. The new implementation removes this uncertainty, and removes a lot of cruft left over from the time this test was written using pthreads. Added: Modified: lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/main.cpp Removed: ################################################################################ diff --git a/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py b/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py index 325252f9ae00..95499883aa7a 100644 --- a/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py +++ b/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py @@ -19,7 +19,6 @@ class ThreadSpecificBreakPlusConditionTestCase(TestBase): @skipIfDarwin # hits break in another thread in testrun @add_test_categories(['pyapi']) - @expectedFailureAll(oslist=['ios', 'watchos', 'tvos', 'bridgeos'], archs=['armv7', 'armv7k'], bugnumber='rdar://problem/34563348') # Two threads seem to end up with the same my_value when built for armv7. @expectedFlakeyNetBSD def test_python(self): """Test that we obey thread conditioned breakpoints.""" diff --git a/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/main.cpp b/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/main.cpp index af8ab84157fd..beceb09e5b9c 100644 --- a/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/main.cpp +++ b/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/main.cpp @@ -2,38 +2,22 @@ #include <thread> #include <vector> -void * -thread_function (void *thread_marker) -{ - int keep_going = 1; - int my_value = *((int *)thread_marker); - int counter = 0; - - while (counter < 20) - { - counter++; // Break here in thread body. - std::this_thread::sleep_for(std::chrono::microseconds(10)); - } - return NULL; +void thread_function(int my_value) { + int counter = 0; + while (counter < 20) { + counter++; // Break here in thread body. + std::this_thread::sleep_for(std::chrono::microseconds(10)); + } } +int main() { + std::vector<std::thread> threads; -int -main () -{ - std::vector<std::thread> threads; - - int thread_value = 0; - int i; - - for (i = 0; i < 10; i++) - { - thread_value += 1; - threads.push_back(std::thread(thread_function, &thread_value)); - } + for (int i = 0; i < 10; i++) + threads.push_back(std::thread(thread_function, threads.size() + 1)); - for (i = 0; i < 10; i++) - threads[i].join(); + for (std::thread &t : threads) + t.join(); - return 0; + return 0; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits