JinHai created THRIFT-5831:
------------------------------

             Summary: Threadsanitizer reports data race on Thrift c++ 
                 Key: THRIFT-5831
                 URL: https://issues.apache.org/jira/browse/THRIFT-5831
             Project: Thrift
          Issue Type: Bug
         Environment: Ubuntu 24.04, Clang-18
            Reporter: JinHai
             Fix For: 0.20.0


{code:c++}
 * Data race (pid=689591)
 * Read of size 8 at 0x72b0000000e0 by thread T370:
 * 0x5555558f11fb send
 * 0x55555918b3c2 apache::thrift::transport::TServerSocket::notify 
TServerSocket.cpp:713
 * 0x55555918b4bb apache::thrift::transport::TServerSocket::interrupt 
TServerSocket.cpp:722
 * 0x5555591a05d2 apache::thrift::server::TServerFramework::stop 
TServerFramework.cpp:221
 * 0x5555561b597d (infinity+0xc6197c) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) thrift_server.cpp:127
 * 0x555555945869 main::$_1::operator() const infinity_main.cpp:215
 * 0x555555945816 std::__invoke[abi:ne180100]<…> invoke.h:344
 * 0x555555945786 std::__invoke_void_return_wrapper::__call[abi:ne180100]<…> 
invoke.h:419
 * 0x55555594573e std::__function::__alloc_func::operator()[abi:ne180100] 
function.h:169
 * 0x55555594417a std::__function::__func::operator() function.h:311
 * 0x555555a1f3e2 std::__function::__value_func::operator()[abi:ne180100] const 
function.h:428
 * 0x555555a1f346 std::function::operator() const function.h:981
 * 0x555555ab9c93 (infinity+0x565c92) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) infinity_context.cpp:475
 * 0x555555aba4a6 (infinity+0x5664a5) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) infinity_context.cpp:401
 * 0x55555594701c ShutdownServer infinity_main.cpp:87
 * 0x555555946ee2 main::$_4::operator() const infinity_main.cpp:250
 * 0x555555946e56 std::__invoke[abi:ne180100]<…> invoke.h:344
 * 0x555555946e0e (infinity+0x3f2e0d) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) thread.h:193
 * 0x555555946af3 std::__thread_proxy[abi:ne180100]<…> thread.h:202
 * Previous write of size 8 at 0x72b0000000e0 by thread T302:
 * 0x5555558c3e0b socketpair
 * 0x555559189273 apache::thrift::transport::TServerSocket::listen 
TServerSocket.cpp:388
 * 0x55555919efcd apache::thrift::server::TServerFramework::serve 
TServerFramework.cpp:117
 * 0x5555591916ba apache::thrift::server::TThreadPoolServer::serve 
TThreadPoolServer.cpp:97
 * 0x5555561b58f4 (infinity+0xc618f3) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) thrift_server.cpp:122
 * 0x555555942fe9 ::operator() const infinity_main.cpp:191
 * 0x555555942f56 (infinity+0x3eef55) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) invoke.h:344
 * 0x555555942f0e (infinity+0x3eef0d) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) thread.h:193
 * 0x555555942bf3 std::__thread_proxy[abi:ne180100]<…> thread.h:202
 * Location is file descriptor 7 created by thread T302 at:
 * 0x5555558c3e0b socketpair
 * 0x555559189273 apache::thrift::transport::TServerSocket::listen 
TServerSocket.cpp:388
 * 0x55555919efcd apache::thrift::server::TServerFramework::serve 
TServerFramework.cpp:117
 * 0x5555591916ba apache::thrift::server::TThreadPoolServer::serve 
TThreadPoolServer.cpp:97
 * 0x5555561b58f4 (infinity+0xc618f3) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) thrift_server.cpp:122
 * 0x555555942fe9 ::operator() const infinity_main.cpp:191
 * 0x555555942f56 (infinity+0x3eef55) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) invoke.h:344
 * 0x555555942f0e (infinity+0x3eef0d) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) thread.h:193
 * 0x555555942bf3 std::__thread_proxy[abi:ne180100]<…> thread.h:202
 * Thread T370 (tid=689990, running) created by main thread at:
 * 0x5555558be8f0 pthread_create
 * 0x555555a2ecaa std::__libcpp_thread_create[abi:ne180100] 
__threading_support:317
 * 0x55555594023f std::thread::thread<…> thread.h:212
 * 0x55555593fa91 main infinity_main.cpp:250
 * Thread T302 (tid=689922, running) created by main thread at:
 * 0x5555558be8f0 pthread_create
 * 0x555555a2ecaa std::__libcpp_thread_create[abi:ne180100] 
__threading_support:317
 * 0x555555942853 std::thread::thread<…> thread.h:212
 * 0x5555559425f5 main::$_0::operator() const infinity_main.cpp:191
 * 0x5555559424d6 std::__invoke[abi:ne180100]<…> invoke.h:344
 * 0x555555942446 std::__invoke_void_return_wrapper::__call[abi:ne180100]<…> 
invoke.h:419
 * 0x5555559423fe std::__function::__alloc_func::operator()[abi:ne180100] 
function.h:169
 * 0x555555940e3a std::__function::__func::operator() function.h:311
 * 0x555555a1f3e2 std::__function::__value_func::operator()[abi:ne180100] const 
function.h:428
 * 0x555555a1f346 std::function::operator() const function.h:981
 * 0x555555ab9ba7 (infinity+0x565ba6) (BuildId: 
0a6a1911ecd8983e7950e68f2e2135adab24a457) infinity_context.cpp:468
 * 0x55555593f9fd main infinity_main.cpp:243
{code}

I am using thrift as below.
https://github.com/infiniflow/infinity/blob/d1301a0867447bc80f60ff8b16be2fc8b10344f3/src/network/thrift_server.cpp#L93




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to