mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 07:26:41 +00:00

I've run into an issue where TSan can't be used on some code without turning off deadlock detection because a thread tries to hold too many mutexes. It would be preferable to be able to use deadlock detection as that is a major benefit of TSan. Its mentioned in https://github.com/google/sanitizers/issues/950 that the 64 mutex limit was an arbitrary number. I've increased it to 128 and all the tests still pass. Considering the increasing number of cores on CPUs and how programs can now use more threads to take advantage of it, I think raising the limit to 128 would be some good future proofing --------- Co-authored-by: Vitaly Buka <vitalybuka@google.com>
22 lines
382 B
C++
22 lines
382 B
C++
// RUN: %clangxx_tsan -O1 %s %link_libcxx_tsan -fsanitize=thread -o %t
|
|
// RUN: %run %t 128
|
|
|
|
#include <mutex>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
int main(int argc, char *argv[]) {
|
|
int num_of_mtx = std::atoi(argv[1]);
|
|
|
|
std::vector<std::mutex> mutexes(num_of_mtx);
|
|
|
|
for (auto &mu : mutexes) {
|
|
mu.lock();
|
|
}
|
|
for (auto &mu : mutexes) {
|
|
mu.unlock();
|
|
}
|
|
|
|
return 0;
|
|
}
|