We incorrectly install the atfork handlers multiple times in the test
harness, tracked down to the default parameter used by
CheckLateInitIsOK. This manifested in a hang if running the tests with
--gtest_repeat={>=2} as the atfork handler ran multiple times, causing
double-lock and double-unlock, which on my machine hung.
Add a check-fail for this case as well to prevent this from happening
again (it was difficult to track down and is an easy mistake to make).
Differential Revision: https://reviews.llvm.org/
D139731
}
void GuardedPoolAllocator::installAtFork() {
+ static bool AtForkInstalled = false;
+ if (AtForkInstalled)
+ return;
+ AtForkInstalled = true;
auto Disable = []() {
if (auto *S = getSingleton())
S->disable();