Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MQ: Make XrdMqSharedObject::mIsTransaction atomic to prevent data race
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