Add a warm up pass to pthread_leak.join test
Bug: 73105445
Bug: 37920774
Test: bionic-unit-tests --gtest_filter=pthread_leak*
Change-Id: I227c999ecc13ee0a2136ff6b00a722f135dd48fe
diff --git a/tests/leak_test.cpp b/tests/leak_test.cpp
index de08869..1fa9e56 100644
--- a/tests/leak_test.cpp
+++ b/tests/leak_test.cpp
@@ -107,10 +107,17 @@
// http://b/36045112
TEST(pthread_leak, join) {
LeakChecker lc;
- for (int i = 0; i < 100; ++i) {
- pthread_t thread;
- ASSERT_EQ(0, pthread_create(&thread, nullptr, [](void*) -> void* { return nullptr; }, nullptr));
- ASSERT_EQ(0, pthread_join(thread, nullptr));
+
+ for (size_t pass = 0; pass < 2; ++pass) {
+ for (int i = 0; i < 100; ++i) {
+ pthread_t thread;
+ ASSERT_EQ(0, pthread_create(&thread, nullptr, [](void*) -> void* { return nullptr; }, nullptr));
+ ASSERT_EQ(0, pthread_join(thread, nullptr));
+ }
+
+ // A native bridge implementation might need a warm up pass to reach a steady state.
+ // http://b/37920774.
+ if (pass == 0) lc.Reset();
}
}
@@ -145,9 +152,8 @@
WaitUntilAllExited(tids, arraysize(tids));
- // houdini keeps a thread pool, so we ignore the first pass while the
- // pool fills, but then on the second pass require that the "pool" isn't
- // actually an unbounded leak. https://issuetracker.google.com/37920774.
+ // A native bridge implementation might need a warm up pass to reach a steady state.
+ // http://b/37920774.
if (pass == 0) lc.Reset();
}
}