Skip to content

Commit

Permalink
[NFC][LSAN] Limit the number of concurrent threads is the test
Browse files Browse the repository at this point in the history
Test still fails with D88184 reverted.

The test was flaky on https://bugs.chromium.org/p/chromium/issues/detail?id=1206745 and
https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux

Reviewed By: morehouse

Differential Revision: https://reviews.llvm.org/D102218
  • Loading branch information
vitalybuka committed Jun 8, 2021
1 parent 5b4dda5 commit 11539ed
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions compiler-rt/test/lsan/TestCases/many_threads_detach.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// Use `-pthread` so that its driver will DTRT (ie., ignore it).
// RUN: %clangxx_lsan %s -o %t -pthread && %run %t

#include <assert.h>
#include <dirent.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
Expand All @@ -12,15 +14,21 @@
// reused.
static const size_t kTestThreads = 10000;

// Limit the number of simultaneous threads to avoid reaching the limit.
static const size_t kTestThreadsBatch = 100;

void *null_func(void *args) {
return NULL;
}

int main(void) {
for (size_t i = 0; i < kTestThreads; i++) {
pthread_t thread;
if (pthread_create(&thread, NULL, null_func, NULL) == 0)
pthread_detach(thread);
for (size_t i = 0; i < kTestThreads; i += kTestThreadsBatch) {
pthread_t thread[kTestThreadsBatch];
for (size_t j = 0; j < kTestThreadsBatch; ++j)
assert(pthread_create(&thread[j], NULL, null_func, NULL) == 0);

for (size_t j = 0; j < kTestThreadsBatch; ++j)
assert(pthread_join(thread[j], NULL) == 0);
}
return 0;
}

0 comments on commit 11539ed

Please sign in to comment.