From bf2cc19b044b59bf67f6e32d0f72062f62baeff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Witold=20Kr=C4=99cicki?= Date: Tue, 26 Nov 2019 15:21:25 +0100 Subject: [PATCH] - Access netmgr worker->finished under worker lock only - Join network worker thread to silence tsan --- lib/isc/netmgr/netmgr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 32569093a4..e8d330f008 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -198,6 +198,7 @@ nm_destroy(isc_nm_t **mgr0) { int r = uv_loop_close(&mgr->workers[i].loop); INSIST(r == 0); isc_queue_destroy(mgr->workers[i].ievents); + isc_thread_join(mgr->workers[i].thread, NULL); } isc_condition_destroy(&mgr->wkstatecond); @@ -424,9 +425,10 @@ nm_thread(void *worker0) { atomic_store(&worker->mgr->paused, false); } } + bool finished = worker->finished; UNLOCK(&worker->lock); - if (worker->finished) { + if (finished) { /* * We need to launch the loop one more time * in UV_RUN_NOWAIT mode to make sure that