Line 448: if ( curPerfCounter.QuadPart >= this->lastPerfCounter )
Problem: There is a thread synchronization issue which causes the 'curPerfCounter.QuadPart' to be less than the 'this->lastPerfCounter', and we will handle it as a roll over case. But actually this is not a roll over case, the 'this->lastPerfCounter' is changed by another thread which executes the 'void currentTime::getCurrentTime ( epicsTimeStamp & dest ) '
How to fix:
We can move line 445 ' EnterCriticalSection ( & this->mutex );' to the beginning of this function.
EPICS Base version 3.14.9
File: /src/libCom/ osi/os/ WIN32/osdTime. cpp
Function: epicsTimerNotif y::expireStatus currentTime::expire ( const epicsTime & )
Line 448: if ( curPerfCounter. QuadPart >= this->lastPerfC ounter )
Problem: There is a thread synchronization issue which causes the 'curPerfCounter .QuadPart' to be less than the 'this-> lastPerfCounter ', and we will handle it as a roll over case. But actually this is not a roll over case, the 'this-> lastPerfCounter ' is changed by another thread which executes the 'void currentTime: :getCurrentTime ( epicsTimeStamp & dest ) '
How to fix: ction ( & this->mutex );' to the beginning of this function.
We can move line 445 ' EnterCriticalSe