songgaoye commented on PR #3671:
URL: https://github.com/apache/brpc/pull/3671#issuecomment-6416784652

   Run the unit tests with TSan on the master branch.
   ```shell
   Note: Google Test filter = MPSCQueueTest.concurrent_publication*
   [==========] Running 2 tests from 1 test suite.
   [----------] Global test environment set-up.
   [----------] 2 tests from MPSCQueueTest
   [ RUN      ] MPSCQueueTest.concurrent_publication
   ==================
   WARNING: ThreadSanitizer: data race (pid=209120)
     Read of size 4 at 0x721000008008 by main thread:
       #0 std::pair<unsigned int, unsigned int>::operator=(std::pair<unsigned 
int, unsigned int>&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_pair.h:743:10
 (master-tsan-tests+0xefa61) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:146:15 
(master-tsan-tests+0xefa61)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Dequeue(std::pair<unsigned int, unsigned int>&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:129:12 
(master-tsan-tests+0xefa61)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:154:20 
(master-tsan-tests+0xefa61)
       #4 (anonymous 
namespace)::MPSCQueueTest_concurrent_publication_Test::TestBody() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:175:5 
(master-tsan-tests+0xefa61)
       #5 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #13 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #14 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #15 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
     Previous write of size 8 at 0x721000008008 by thread T2:
       #0 malloc <null> (master-tsan-tests+0x6bc20) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:46:28 
(master-tsan-tests+0xf05c1) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf05c1)
       #3 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf05c1)
       #4 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf05c1)
       #5 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf05c1)
       #6 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf05c1)
       #7 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf05c1)
       #8 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf05c1)
       #9 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf05c1)
       #10 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Location is heap block of size 64 at 0x721000008000 allocated by thread T2:
       #0 malloc <null> (master-tsan-tests+0x6bc20) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:46:28 
(master-tsan-tests+0xf05c1) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf05c1)
       #3 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf05c1)
       #4 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf05c1)
       #5 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf05c1)
       #6 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf05c1)
       #7 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf05c1)
       #8 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf05c1)
       #9 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf05c1)
       #10 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Thread T2 (tid=209123, running) created by main thread at:
       #0 pthread_create <null> (master-tsan-tests+0x6d5cf) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State>>, void (*)()) <null> 
(libstdc++.so.6+0xeac88) (BuildId: 40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
       #2 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
   SUMMARY: ThreadSanitizer: data race 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:146:15 in 
butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*)
   ==================
   ==================
   WARNING: ThreadSanitizer: data race (pid=209120)
     Read of size 8 at 0x721000008000 by main thread:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:149:16 
(master-tsan-tests+0xefa92) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Dequeue(std::pair<unsigned int, unsigned int>&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:129:12 
(master-tsan-tests+0xefa92)
       #2 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:154:20 
(master-tsan-tests+0xefa92)
       #3 (anonymous 
namespace)::MPSCQueueTest_concurrent_publication_Test::TestBody() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:175:5 
(master-tsan-tests+0xefa92)
       #4 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #13 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #14 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
     Previous write of size 8 at 0x721000008000 by thread T2:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueImpl(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*) /tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:123:16 
(master-tsan-tests+0xf0557) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:113:5 
(master-tsan-tests+0xf0557)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf0557)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf0557)
       #4 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf0557)
       #5 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf0557)
       #6 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf0557)
       #7 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf0557)
       #8 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf0557)
       #9 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Location is heap block of size 64 at 0x721000008000 allocated by thread T2:
       #0 malloc <null> (master-tsan-tests+0x6bc20) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:46:28 
(master-tsan-tests+0xf05c1) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf05c1)
       #3 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf05c1)
       #4 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf05c1)
       #5 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf05c1)
       #6 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf05c1)
       #7 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf05c1)
       #8 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf05c1)
       #9 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf05c1)
       #10 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Thread T2 (tid=209123, running) created by main thread at:
       #0 pthread_create <null> (master-tsan-tests+0x6d5cf) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State>>, void (*)()) <null> 
(libstdc++.so.6+0xeac88) (BuildId: 40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
       #2 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
   SUMMARY: ThreadSanitizer: data race 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:149:16 in 
butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*)
   ==================
   ==================
   WARNING: ThreadSanitizer: data race (pid=209120)
     Read of size 8 at 0x7210000a6f00 by main thread:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::ReverseList(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*) /tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:178:19 
(master-tsan-tests+0xf5a14) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:150:9 
(master-tsan-tests+0xefaa7) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Dequeue(std::pair<unsigned int, unsigned int>&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:129:12 
(master-tsan-tests+0xefaa7)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:154:20 
(master-tsan-tests+0xefaa7)
       #4 (anonymous 
namespace)::MPSCQueueTest_concurrent_publication_Test::TestBody() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:175:5 
(master-tsan-tests+0xefaa7)
       #5 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #13 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #14 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #15 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
     Previous write of size 8 at 0x7210000a6f00 by thread T4:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueImpl(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*) /tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:120:20 
(master-tsan-tests+0xf0613) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:113:5 
(master-tsan-tests+0xf0613)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf0613)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf0613)
       #4 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf0613)
       #5 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf0613)
       #6 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf0613)
       #7 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf0613)
       #8 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf0613)
       #9 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Location is heap block of size 64 at 0x7210000a6f00 allocated by thread T4:
       #0 malloc <null> (master-tsan-tests+0x6bc20) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:46:28 
(master-tsan-tests+0xf05c1) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf05c1)
       #3 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf05c1)
       #4 void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf05c1)
       #5 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf05c1)
       #6 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf05c1)
       #7 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf05c1)
       #8 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf05c1)
       #9 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::DefaultAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf05c1)
       #10 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Thread T4 (tid=209125, running) created by main thread at:
       #0 pthread_create <null> (master-tsan-tests+0x6d5cf) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State>>, void (*)()) <null> 
(libstdc++.so.6+0xeac88) (BuildId: 40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
       #2 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
   SUMMARY: ThreadSanitizer: data race 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:178:19 in 
butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::DefaultAllocator<std::pair<unsigned int, unsigned 
int>>>::ReverseList(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*)
   ==================
   [       OK ] MPSCQueueTest.concurrent_publication (117 ms)
   [ RUN      ] MPSCQueueTest.concurrent_publication_with_object_pool
   ==================
   WARNING: ThreadSanitizer: data race (pid=209120)
     Read of size 4 at 0x72a40000f008 by main thread:
       #0 std::pair<unsigned int, unsigned int>::operator=(std::pair<unsigned 
int, unsigned int>&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_pair.h:743:10
 (master-tsan-tests+0xf0b91) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:146:15 
(master-tsan-tests+0xf0b91)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Dequeue(std::pair<unsigned int, unsigned int>&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:129:12 
(master-tsan-tests+0xf0b91)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:154:20 
(master-tsan-tests+0xf0b91)
       #4 (anonymous 
namespace)::MPSCQueueTest_concurrent_publication_with_object_pool_Test::TestBody()
 /tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:180:5 
(master-tsan-tests+0xf0b91)
       #5 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #13 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #14 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #15 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
     Previous write of size 8 at 0x72a40000f008 by thread T7:
       #0 void butil::ManualConstructor<std::pair<unsigned int, unsigned 
int>>::Init<std::pair<unsigned int, unsigned int>>(std::pair<unsigned int, 
unsigned int>&&) 
/home/ysg/Github/bprc/src/butil/memory/manual_constructor.h:63:34 
(master-tsan-tests+0xf1710) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:112:20 
(master-tsan-tests+0xf1710)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf1710)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf1710)
       #4 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf1710)
       #5 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf1710)
       #6 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf1710)
       #7 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf1710)
       #8 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf1710)
       #9 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Location is heap block of size 16448 at 0x72a40000f000 allocated by thread 
T7:
       #0 operator new(unsigned long, std::align_val_t, std::nothrow_t const&) 
<null> (master-tsan-tests+0xed071) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, 
unsigned int>>>::add_block(unsigned long*) 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:420:34 
(master-tsan-tests+0xf6793) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, 
unsigned int>>>::LocalPool::get() 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:227:13 
(master-tsan-tests+0xf6252) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 butil::MPSCQueueNode<std::pair<unsigned int, unsigned int>>* 
butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>>::get_object<>() 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:282:23 
(master-tsan-tests+0xf5fc8) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 butil::MPSCQueueNode<std::pair<unsigned int, unsigned int>>* 
butil::get_object<butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>>() /home/ysg/Github/bprc/src/butil/object_pool.h:86:40 
(master-tsan-tests+0xf5f60) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:54:28 
(master-tsan-tests+0xf16d3) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf16d3)
       #7 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf16d3)
       #8 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf16d3)
       #9 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf16d3)
       #10 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf16d3)
       #11 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf16d3)
       #12 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf16d3)
       #13 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf16d3)
       #14 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Thread T7 (tid=209129, running) created by main thread at:
       #0 pthread_create <null> (master-tsan-tests+0x6d5cf) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State>>, void (*)()) <null> 
(libstdc++.so.6+0xeac88) (BuildId: 40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
       #2 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
   SUMMARY: ThreadSanitizer: data race 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:146:15 in 
butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*)
   ==================
   ==================
   WARNING: ThreadSanitizer: data race (pid=209120)
     Read of size 8 at 0x72a40000f000 by main thread:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:149:16 
(master-tsan-tests+0xf0bc2) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Dequeue(std::pair<unsigned int, unsigned int>&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:129:12 
(master-tsan-tests+0xf0bc2)
       #2 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:154:20 
(master-tsan-tests+0xf0bc2)
       #3 (anonymous 
namespace)::MPSCQueueTest_concurrent_publication_with_object_pool_Test::TestBody()
 /tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:180:5 
(master-tsan-tests+0xf0bc2)
       #4 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #13 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #14 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
     Previous write of size 8 at 0x72a40000f000 by thread T7:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueImpl(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*) /tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:123:16 
(master-tsan-tests+0xf1687) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:113:5 
(master-tsan-tests+0xf1687)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf1687)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf1687)
       #4 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf1687)
       #5 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf1687)
       #6 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf1687)
       #7 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf1687)
       #8 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf1687)
       #9 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Location is heap block of size 16448 at 0x72a40000f000 allocated by thread 
T7:
       #0 operator new(unsigned long, std::align_val_t, std::nothrow_t const&) 
<null> (master-tsan-tests+0xed071) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, 
unsigned int>>>::add_block(unsigned long*) 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:420:34 
(master-tsan-tests+0xf6793) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, 
unsigned int>>>::LocalPool::get() 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:227:13 
(master-tsan-tests+0xf6252) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 butil::MPSCQueueNode<std::pair<unsigned int, unsigned int>>* 
butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>>::get_object<>() 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:282:23 
(master-tsan-tests+0xf5fc8) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 butil::MPSCQueueNode<std::pair<unsigned int, unsigned int>>* 
butil::get_object<butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>>() /home/ysg/Github/bprc/src/butil/object_pool.h:86:40 
(master-tsan-tests+0xf5f60) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:54:28 
(master-tsan-tests+0xf16d3) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf16d3)
       #7 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf16d3)
       #8 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf16d3)
       #9 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf16d3)
       #10 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf16d3)
       #11 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf16d3)
       #12 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf16d3)
       #13 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf16d3)
       #14 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Thread T7 (tid=209129, running) created by main thread at:
       #0 pthread_create <null> (master-tsan-tests+0x6d5cf) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State>>, void (*)()) <null> 
(libstdc++.so.6+0xeac88) (BuildId: 40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
       #2 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
   SUMMARY: ThreadSanitizer: data race 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:149:16 in 
butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*)
   ==================
   ==================
   WARNING: ThreadSanitizer: data race (pid=209120)
     Read of size 8 at 0x72a400064400 by main thread:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::ReverseList(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*) /tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:178:19 
(master-tsan-tests+0xf6ae4) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::DequeueImpl(std::pair<unsigned int, unsigned int>*) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:150:9 
(master-tsan-tests+0xf0bd7) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Dequeue(std::pair<unsigned int, unsigned int>&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:129:12 
(master-tsan-tests+0xf0bd7)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>() 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:154:20 
(master-tsan-tests+0xf0bd7)
       #4 (anonymous 
namespace)::MPSCQueueTest_concurrent_publication_with_object_pool_Test::TestBody()
 /tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:180:5 
(master-tsan-tests+0xf0bd7)
       #5 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #13 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #14 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #15 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
     Previous write of size 8 at 0x72a400064400 by thread T8:
       #0 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueImpl(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*) /tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:120:20 
(master-tsan-tests+0xf173a) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:113:5 
(master-tsan-tests+0xf173a)
       #2 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf173a)
       #3 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf173a)
       #4 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf173a)
       #5 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf173a)
       #6 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf173a)
       #7 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf173a)
       #8 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf173a)
       #9 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Location is heap block of size 16448 at 0x72a400064000 allocated by thread 
T8:
       #0 operator new(unsigned long, std::align_val_t, std::nothrow_t const&) 
<null> (master-tsan-tests+0xed071) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, 
unsigned int>>>::add_block(unsigned long*) 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:420:34 
(master-tsan-tests+0xf6793) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #2 butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, 
unsigned int>>>::LocalPool::get() 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:227:13 
(master-tsan-tests+0xf6252) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 butil::MPSCQueueNode<std::pair<unsigned int, unsigned int>>* 
butil::ObjectPool<butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>>::get_object<>() 
/tmp/brpc-mpsc-tsan.JXAybh/fixed/butil/object_pool_inl.h:282:23 
(master-tsan-tests+0xf5fc8) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 butil::MPSCQueueNode<std::pair<unsigned int, unsigned int>>* 
butil::get_object<butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>>() /home/ysg/Github/bprc/src/butil/object_pool.h:86:40 
(master-tsan-tests+0xf5f60) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>::Alloc() 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:54:28 
(master-tsan-tests+0xf16d3) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 void butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::EnqueueInternal<std::pair<unsigned int, unsigned 
int>>(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:110:43 
(master-tsan-tests+0xf16d3)
       #7 butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::Enqueue(std::pair<unsigned int, unsigned int>&&) 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:104:5 
(master-tsan-tests+0xf16d3)
       #8 void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()::operator()() const 
/tmp/brpc-mpsc-tsan.JXAybh/master/mpsc_queue_unittest.cc:143:23 
(master-tsan-tests+0xf16d3)
       #9 void std::__invoke_impl<void, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(std::__invoke_other, void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
 (master-tsan-tests+0xf16d3)
       #10 std::__invoke_result<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>::type std::__invoke<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>(void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()&&) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
 (master-tsan-tests+0xf16d3)
       #11 void std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13
 (master-tsan-tests+0xf16d3)
       #12 std::thread::_Invoker<std::tuple<void (anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>::operator()() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11
 (master-tsan-tests+0xf16d3)
       #13 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void 
(anonymous 
namespace)::CheckConcurrentPublication<butil::ObjectPoolAllocator<std::pair<unsigned
 int, unsigned int>>>()::'lambda'()>>>::_M_run() 
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13
 (master-tsan-tests+0xf16d3)
       #14 <null> <null> (libstdc++.so.6+0xeabb3) (BuildId: 
40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
   
     Thread T8 (tid=209130, running) created by main thread at:
       #0 pthread_create <null> (master-tsan-tests+0x6d5cf) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, 
std::default_delete<std::thread::_State>>, void (*)()) <null> 
(libstdc++.so.6+0xeac88) (BuildId: 40b9b0d17fdeebfb57331304da2b7f85e1396ef2)
       #2 void 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x1756cc) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #3 void 
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
(master-tsan-tests+0x142aaa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #4 testing::Test::Run() <null> (master-tsan-tests+0x115b28) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #5 testing::TestInfo::Run() <null> (master-tsan-tests+0x116c23) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #6 testing::TestSuite::Run() <null> (master-tsan-tests+0x117897) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #7 testing::internal::UnitTestImpl::RunAllTests() <null> 
(master-tsan-tests+0x12d4e6) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #8 bool 
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x17a16f) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #9 bool 
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
 bool>(testing::internal::UnitTestImpl*, bool 
(testing::internal::UnitTestImpl::*)(), char const*) <null> 
(master-tsan-tests+0x146afa) (BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #10 testing::UnitTest::Run() <null> (master-tsan-tests+0x12cd69) 
(BuildId: 8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #11 RUN_ALL_TESTS() <null> (master-tsan-tests+0xf82b7) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
       #12 main <null> (master-tsan-tests+0xf8266) (BuildId: 
8bfd3c824fe49baf3aa6c9dd39bc64329b8d717d)
   
   SUMMARY: ThreadSanitizer: data race 
/tmp/brpc-mpsc-tsan.JXAybh/master/butil/containers/mpsc_queue.h:178:19 in 
butil::MPSCQueue<std::pair<unsigned int, unsigned int>, 
butil::ObjectPoolAllocator<std::pair<unsigned int, unsigned 
int>>>::ReverseList(butil::MPSCQueueNode<std::pair<unsigned int, unsigned 
int>>*)
   ==================
   [       OK ] MPSCQueueTest.concurrent_publication_with_object_pool (37 ms)
   [----------] 2 tests from MPSCQueueTest (155 ms total)
   
   [----------] Global test environment tear-down
   [==========] 2 tests from 1 test suite ran. (155 ms total)
   [  PASSED  ] 2 tests.
   ThreadSanitizer: reported 6 warnings
   `


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to