From: Dmitry Vyukov Date: Mon, 13 Dec 2021 08:28:42 +0000 (+0100) Subject: tsan: deflake dlopen_static_tls.cpp X-Git-Tag: upstream/15.0.7~23259 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b08883337531feb2b72aee89164c80480aa9d7dc;p=platform%2Fupstream%2Fllvm.git 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 --- 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;