Skip to content

Commit

Permalink
Revert "[NFC][LSAN] Limit the number of concurrent threads is the test"
Browse files Browse the repository at this point in the history
This reverts commit 2a73b7b.

This appears to be causing the following failures on GreenDragon:
  LeakSanitizer-AddressSanitizer-x86_64 :: TestCases/many_threads_detach.cpp
  LeakSanitizer-Standalone-x86_64 :: TestCases/many_threads_detach.cpp

First failure:
    http://green.lab.llvm.org/green/job/clang-stage1-RA/20754/

Still failing in latest build:
    http://green.lab.llvm.org/green/job/clang-stage1-RA/20928/
  • Loading branch information
fhahn committed May 17, 2021
1 parent 85e31ed commit 65936b9
Showing 1 changed file with 3 additions and 23 deletions.
26 changes: 3 additions & 23 deletions compiler-rt/test/lsan/TestCases/many_threads_detach.cpp
Expand Up @@ -3,8 +3,6 @@
// 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 @@ -14,33 +12,15 @@
// 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 count_threads() {
DIR *d = opendir("/proc/self/task");
assert(d);
int count = 0;
while (readdir(d))
++count;
closedir(d);
assert(count);
return count;
}

int main(void) {
for (size_t i = 0; i < kTestThreads; i += kTestThreadsBatch) {
for (size_t j = 0; j < kTestThreadsBatch; ++j) {
pthread_t thread;
assert(pthread_create(&thread, NULL, null_func, NULL) == 0);
for (size_t i = 0; i < kTestThreads; i++) {
pthread_t thread;
if (pthread_create(&thread, NULL, null_func, NULL) == 0)
pthread_detach(thread);
}
while (count_threads() > 10)
sched_yield();
}
return 0;
}

0 comments on commit 65936b9

Please sign in to comment.