Skip to content
  • Georgios Bitzes's avatar
    COMMON: Fix data-race on mRdLockCounter / mWrLockCounter · 523659e2
    Georgios Bitzes authored
    HAVE_ATOMICS was not defined in all compilation units using
    GetReadLockCounter / GetWriteLockCounter, resulting in racy
    reads.
    
    Changed the two counters to use std::atomic instead.
    
    WARNING: ThreadSanitizer: data race (pid=25899)
      Atomic write of size 8 at 0x7f6ef3633948 by thread T189 (mutexes: write M2048):
        #0 __tsan_atomic64_fetch_add <null> (libtsan.so.0+0x000000064c50)
        #1 eos::common::RWMutex::LockWrite() /afs/cern.ch/user/g/gbitzes/dev/eos-dev/common/RWMutex.cc:378 (libeosCommon.so.4+0x000000044014)
        #2 eos::common::RWMutexWriteLock::RWMutexWriteLock(eos::common::RWMutex&) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/common/RWMutex.cc:1259 (libeosCommon.so.4+0x000000044309)
        #3 XrdMgmOfs::FsConfigListener() /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/XrdMgmOfs/FsConfigListener.cc:212 (libXrdEosMgm.so+0x0000004b5641)
        #4 XrdMgmOfs::StartMgmFsConfigListener(void*) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/XrdMgmOfs.cc:664 (libXrdEosMgm.so+0x0000004b7c15)
        #5 XrdSysThread_Xeq <null> (libXrdUtils.so.2+0x00000002d75e)
        #6 <null> <null> (libtsan.so.0+0x0000000257eb)
    
      Previous read of size 8 at 0x7f6ef3633948 by thread T187:
        #0 eos::mgm::Stat::Circulate() /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/Stat.cc:1195 (libXrdEosMgm.so+0x000000580e8b)
        #1 XrdMgmOfs::StartMgmStats(void*) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/XrdMgmOfs.cc:653 (libXrdEosMgm.so+0x000000484c35)
        #2 XrdSysThread_Xeq <null> (libXrdUtils.so.2+0x00000002d75e)
        #3 <null> <null> (libtsan.so.0+0x0000000257eb)
    
      Location is global 'eos::mgm::FsView::gFsView' of size 2400 at 0x7f6ef36335e0 (libXrdEosMgm.so+0x000000b5d948)
    523659e2