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
This commit is contained in:
Dmitry Vyukov 2021-12-13 09:28:42 +01:00
parent 7de546e9e8
commit b088833375
1 changed files with 2 additions and 0 deletions

View File

@ -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;