Skip to content

Commit

Permalink
MQ: Make XrdMqSharedObject::mIsTransaction atomic to prevent data race
Browse files Browse the repository at this point in the history
WARNING: ThreadSanitizer: data race (pid=27407)
  Write of size 1 at 0x7b44001717c0 by thread T105 (mutexes: read M2220, read M2444, write M1123783398499600256):
    #0 XrdMqSharedHash::CloseTransaction() /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mq/XrdMqSharedObject.cc:429 (libXrdMqClient.so.4+0x00000002d19f)
    #1 XrdMqSharedHash::SetImpl(char const*, char const*, bool) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mq/XrdMqSharedObject.cc:758 (libXrdMqClient.so.4+0x000000038015)
    #2 bool XrdMqSharedHash::Set<char const*>(char const*, char const*&&, bool) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mq/XrdMqSharedObject.hh:1115 (libXrdEosMgm.so+0x0000001d28a8)
    #3 eos::mgm::BaseView::SetConfigMember(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/FsView.cc:2587 (libXrdEosMgm.so+0x00000042618c)
    #4 eos::mgm::FsNode::SetActiveStatus(int) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/FsView.cc:2551 (libXrdEosMgm.so+0x00000041a5ec)
    #5 eos::mgm::Messaging::Update(XrdAdvisoryMqMessage*) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/Messaging.cc:141 (libXrdEosMgm.so+0x00000027d4f8)
    #6 eos::mgm::Messaging::Process(XrdMqMessage*) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/Messaging.cc:219 (libXrdEosMgm.so+0x00000027c51b)
    #7 eos::mgm::Messaging::Listen() /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/Messaging.cc:187 (libXrdEosMgm.so+0x00000027b07c)
    #8 XrdMqMessaging::Start(void*) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mq/XrdMqMessaging.cc:35 (libXrdMqClient.so.4+0x0000000272ac)
    #9 XrdSysThread_Xeq <null> (libXrdUtils.so.2+0x00000002d75e)
    #10 <null> <null> (libtsan.so.0+0x0000000257eb)

  Previous read of size 1 at 0x7b44001717c0 by thread T40 (mutexes: read M2220, read M2444):
    #0 XrdMqSharedHash::SetImpl(char const*, char const*, bool) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mq/XrdMqSharedObject.cc:749 (libXrdMqClient.so.4+0x000000037e77)
    #1 bool XrdMqSharedHash::Set<char const*>(char const*, char const*&&, bool) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mq/XrdMqSharedObject.hh:1115 (libXrdEosMgm.so+0x0000001d28a8)
    #2 eos::mgm::BaseView::SetConfigMember(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/FsView.cc:2587 (libXrdEosMgm.so+0x00000042618c)
    #3 eos::mgm::FsNode::SetActiveStatus(int) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/FsView.cc:2553 (libXrdEosMgm.so+0x00000041a539)
    #4 eos::mgm::FsView::HeartBeatCheck() /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/FsView.cc:2292 (libXrdEosMgm.so+0x0000004280b9)
    #5 eos::mgm::FsView::StaticHeartBeatCheck(void*) /afs/cern.ch/user/g/gbitzes/dev/eos-dev/mgm/FsView.cc:2223 (libXrdEosMgm.so+0x000000428f25)
    #6 XrdSysThread_Xeq <null> (libXrdUtils.so.2+0x00000002d75e)
    #7 <null> <null> (libtsan.so.0+0x0000000257eb)
  • Loading branch information
gbitzes authored and esindril committed Jul 26, 2018
1 parent 158b0b7 commit d54a882
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion mq/XrdMqSharedObject.hh
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ protected:

private:
std::string mSubject; ///< Hash subject
bool mIsTransaction; ///< True if ongoing transaction
std::atomic<bool> mIsTransaction; ///< True if ongoing transaction
std::string mBroadcastQueue; ///< Name of the broadcast queue
std::set<std::string> mDeletions; ///< Set of deletions
std::set<std::string> mTransactions; ///< Set of transactions
Expand Down

0 comments on commit d54a882

Please sign in to comment.