[ 
https://issues.apache.org/jira/browse/KUDU-3066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17049878#comment-17049878
 ] 

Adar Dembo commented on KUDU-3066:
----------------------------------

That's pretty weird though: the renewal thread is only started by the main 
thread _after_ the main thread has written to g_init_ctx. I thought TSAN is 
smart enough to recognize that.

Is Impala doing something weird like calling InitKerberosForServer multiple 
times? Come to think of it, that would be a problem in Kudu too if we ever 
enabled Kerberos in an InternalMiniCluster-based test.

> Possible data race in kudu::security::InitKerberosForServer
> -----------------------------------------------------------
>
>                 Key: KUDU-3066
>                 URL: https://issues.apache.org/jira/browse/KUDU-3066
>             Project: Kudu
>          Issue Type: Bug
>          Components: security
>            Reporter: Sahil Takiar
>            Priority: Major
>
> Original issue reported in IMPALA-9455. Impala has a test that is reporting a 
> race condition when running on a TSAN build. The race condition is on the 
> global field {{KinitContext::g_kinit_ctx}}
> {code}
> WARNING: ThreadSanitizer: data race (pid=9892)
>    Write of size 8 at 0x0000076700c8 by main thread:
>      #0 kudu::security::InitKerberosForServer(std::string const&, std::string 
> const&, std::string const&, bool) Impala/be/src/kudu/security/init.cc:488:15 
> (rpc-mgr-kerberized-test+0x1d5a627)
>      #1 impala::SecureAuthProvider::Start() 
> Impala/be/src/rpc/authentication.cc:947:5 (rpc-mgr-kerberized-test+0x1b0056b)
>      #2 impala::AuthManager::Init() 
> Impala/be/src/rpc/authentication.cc:1269:3 (rpc-mgr-kerberized-test+0x1afedc3)
>      #3 impala::InitAuth(std::string const&) 
> Impala/be/src/rpc/authentication.cc:781:3 (rpc-mgr-kerberized-test+0x1afdb2f)
>      #4 impala::RpcMgrKerberizedTest::SetUp() 
> Impala/be/src/rpc/rpc-mgr-kerberized-test.cc:49:5 
> (rpc-mgr-kerberized-test+0x1949e01)
>      #5 void 
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
> (rpc-mgr-kerberized-test+0x4191f72)
>      #6 __libc_start_main <null> (libc.so.6+0x21c04)
>  
>    Previous read of size 8 at 0x0000076700c8 by thread T42:
>      #0 kudu::security::(anonymous namespace)::RenewThread() 
> Impala/be/src/kudu/security/init.cc:205:37 (rpc-mgr-kerberized-test+0x1d5b020)
>      #1 boost::detail::function::void_function_invoker0<void (*)(), 
> void>::invoke(boost::detail::function::function_buffer&) 
> Impala-Toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:112:11
>  (rpc-mgr-kerberized-test+0x195fc9b)
>      #2 boost::function0<void>::operator()() const 
> Impala-Toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:766:14
>  (rpc-mgr-kerberized-test+0x19e2031)
>      #3 kudu::Thread::SuperviseThread(void*) 
> Impala/be/src/kudu/util/thread.cc:675:3 (rpc-mgr-kerberized-test+0x19dfc3a)
>  
>    Location is global 'kudu::security::(anonymous namespace)::g_kinit_ctx' of 
> size 8 at 0x0000076700c8 (rpc-mgr-kerberized-test+0x0000076700c8)
>  
>    Thread T42 'reacquire threa' (tid=9953, running) created by main thread at:
>      #0 pthread_create 
> /mnt/source/llvm/llvm-5.0.1.src-p2/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:889
>  (rpc-mgr-kerberized-test+0x18da63b)
>      #1 kudu::Thread::StartThread(std::string const&, std::string const&, 
> boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*) 
> Impala/be/src/kudu/util/thread.cc:619:15 (rpc-mgr-kerberized-test+0x19df4d0)
>      #2 kudu::Status kudu::Thread::Create<void (*)()>(std::string const&, 
> std::string const&, void (* const&)(), scoped_refptr<kudu::Thread>*) 
> Impala/be/src/kudu/util/thread.h:158:12 (rpc-mgr-kerberized-test+0x1d5c956)
>      #3 kudu::security::InitKerberosForServer(std::string const&, std::string 
> const&, std::string const&, bool) Impala/be/src/kudu/security/init.cc:497:3 
> (rpc-mgr-kerberized-test+0x1d5a743)
>      #4 impala::SecureAuthProvider::Start() 
> Impala/be/src/rpc/authentication.cc:947:5 (rpc-mgr-kerberized-test+0x1b0056b)
>      #5 impala::AuthManager::Init() 
> Impala/be/src/rpc/authentication.cc:1269:3 (rpc-mgr-kerberized-test+0x1afedc3)
>      #6 impala::InitAuth(std::string const&) 
> Impala/be/src/rpc/authentication.cc:781:3 (rpc-mgr-kerberized-test+0x1afdb2f)
>      #7 impala::RpcMgrKerberizedTest::SetUp() 
> Impala/be/src/rpc/rpc-mgr-kerberized-test.cc:49:5 
> (rpc-mgr-kerberized-test+0x1949e01)
>      #8 void 
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null> 
> (rpc-mgr-kerberized-test+0x4191f72)
>      #9 __libc_start_main <null> (libc.so.6+0x21c04)
>  
>  SUMMARY: ThreadSanitizer: data race 
> Impala/be/src/kudu/security/init.cc:488:15 in 
> kudu::security::InitKerberosForServer(std::string const&, std::string const&, 
> std::string const&, bool)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to