diff options
Diffstat (limited to 'tests/leak_test.cpp')
-rw-r--r-- | tests/leak_test.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/tests/leak_test.cpp b/tests/leak_test.cpp index 1fa9e564d..600520959 100644 --- a/tests/leak_test.cpp +++ b/tests/leak_test.cpp @@ -124,17 +124,22 @@ TEST(pthread_leak, join) { // http://b/36045112 TEST(pthread_leak, detach) { LeakChecker lc; + constexpr int kThreadCount = 100; - for (size_t pass = 0; pass < 2; ++pass) { - constexpr int kThreadCount = 100; + // Devices with low power cores/low number of cores can not finish test in time hence decreasing + // threads count to 90. + // http://b/129924384. + int threads_count = (sysconf(_SC_NPROCESSORS_CONF) > 2) ? kThreadCount : (kThreadCount - 10); + + for (size_t pass = 0; pass < 1; ++pass) { struct thread_data { pthread_barrier_t* barrier; pid_t* tid; } threads[kThreadCount] = {}; pthread_barrier_t barrier; - ASSERT_EQ(pthread_barrier_init(&barrier, nullptr, kThreadCount + 1), 0); + ASSERT_EQ(pthread_barrier_init(&barrier, nullptr, threads_count + 1), 0); // Start child threads. pid_t tids[kThreadCount]; - for (int i = 0; i < kThreadCount; ++i) { + for (int i = 0; i < threads_count; ++i) { threads[i] = {&barrier, &tids[i]}; const auto thread_function = +[](void* ptr) -> void* { thread_data* data = static_cast<thread_data*>(ptr); |