From: Witold Kręcicki Date: Tue, 26 Nov 2019 14:21:25 +0000 (+0100) Subject: - Access netmgr worker->finished under worker lock only X-Git-Tag: v9.15.7~62^2 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=bf2cc19b044b59bf67f6e32d0f72062f62baeff5;p=thirdparty%2Fbind9.git - Access netmgr worker->finished under worker lock only - Join network worker thread to silence tsan --- diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 32569093a4b..e8d330f008b 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