From f134abb84e9f6a475cae9cbed302d2e0fdf255bb Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 8 Jul 2019 10:34:53 -0700 Subject: [PATCH] epicsThread avoid possible data race on joined --- modules/libcom/src/osi/epicsThread.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/libcom/src/osi/epicsThread.cpp b/modules/libcom/src/osi/epicsThread.cpp index 92f833847..cf4fd4df7 100644 --- a/modules/libcom/src/osi/epicsThread.cpp +++ b/modules/libcom/src/osi/epicsThread.cpp @@ -153,11 +153,13 @@ bool epicsThread::exitWait ( const double delay ) throw () if ( this->pThreadDestroyed ) { *this->pThreadDestroyed = true; } - if(!joined) { - { - epicsGuard < epicsMutex > guard ( this->mutex ); - joined = true; - } + bool j; + { + epicsGuard < epicsMutex > guard ( this->mutex ); + j = joined; + joined = true; + } + if(!j) { epicsThreadMustJoin(this->id); } return true;