From b08883337531feb2b72aee89164c80480aa9d7dc Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 13 Dec 2021 09:28:42 +0100 Subject: [PATCH] tsan: deflake dlopen_static_tls.cpp Currently the test calls dlclose in the thread concurrently with the main thread calling a function from the dynamic library. This is not good. Wait for the main thread to call the function before calling dlclose. Depends on D115612. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D115613 --- compiler-rt/test/tsan/Linux/dlopen_static_tls.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler-rt/test/tsan/Linux/dlopen_static_tls.cpp b/compiler-rt/test/tsan/Linux/dlopen_static_tls.cpp index a53fc70..f97348d 100644 --- a/compiler-rt/test/tsan/Linux/dlopen_static_tls.cpp +++ b/compiler-rt/test/tsan/Linux/dlopen_static_tls.cpp @@ -49,6 +49,7 @@ void *thread(void *arg) { barrier_wait(&barrier); if (__atomic_load_n(&ready, __ATOMIC_ACQUIRE)) func(); + barrier_wait(&barrier); if (dlclose(lib)) { printf("error in dlclose: %s\n", dlerror()); exit(1); @@ -73,6 +74,7 @@ int main(int argc, char *argv[]) { __atomic_store_n(&ready, 1, __ATOMIC_RELEASE); barrier_wait(&barrier); func(); + barrier_wait(&barrier); pthread_join(th, 0); fprintf(stderr, "DONE\n"); return 0; -- 2.7.4