[
https://issues.apache.org/jira/browse/KUDU-1901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15886985#comment-15886985
]
Todd Lipcon commented on KUDU-1901:
-----------------------------------
actually above one was also benign I think, but this one's the bad one:
{code}
==================
WARNING: ThreadSanitizer: data race (pid=2576)
Write of size 8 at 0x7d30000081d8 by main thread (mutexes: write M554):
#0 free
/home/todd/git/kudu/thirdparty/src/llvm-3.9.1.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:634
(tls_handshake-test+0x00000043f0e7)
#1 CRYPTO_free /home/todd/git/openssl/crypto/mem.c:442
(libcrypto.so.1.0.0+0x000000070aa1)
#2 asn1_item_combine_free /home/todd/git/openssl/crypto/asn1/tasn_fre.c:171
(libcrypto.so.1.0.0+0x000000193e4d)
#3 ASN1_item_free /home/todd/git/openssl/crypto/asn1/tasn_fre.c:72
(libcrypto.so.1.0.0+0x000000193e4d)
#4 X509_free /home/todd/git/openssl/crypto/asn1/x_x509.c:143
(libcrypto.so.1.0.0+0x00000018cd0c)
#5 ssl_set_cert /home/todd/git/openssl/ssl/ssl_rsa.c:444
(libssl.so.1.0.0+0x00000007097d)
#6 SSL_CTX_use_certificate /home/todd/git/openssl/ssl/ssl_rsa.c:389
(libssl.so.1.0.0+0x00000007097d)
#7 kudu::security::TlsContext::AdoptSignedCert(kudu::security::Cert const&)
/home/todd/git/kudu/build/tsan/../../src/kudu/security/tls_context.cc:361:3
(libsecurity.so+0x000000049a47)
#8
kudu::security::TestTlsHandshakeConcurrent_TestConcurrentAdoptCert_Test::TestBody()
/home/todd/git/kudu/build/tsan/../../src/kudu/security/tls_handshake-test.cc:170:5
(tls_handshake-test+0x0000004cfd0b)
#9 void
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000049ba3)
#10 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000049ba3)
#11 testing::Test::Run()
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2150:5
(libgmock.so+0x00000002e7ef)
#12 testing::TestInfo::Run()
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2326:11
(libgmock.so+0x00000002f827)
#13 testing::TestCase::Run()
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2444:28
(libgmock.so+0x000000030478)
#14 testing::internal::UnitTestImpl::RunAllTests()
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:4315:43
(libgmock.so+0x00000003a8d1)
#15 bool
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x00000004a753)
#16 bool
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x00000004a753)
#17 testing::UnitTest::Run()
/home/todd/git/kudu/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:3926:10
(libgmock.so+0x00000003a308)
#18 RUN_ALL_TESTS()
/home/todd/git/kudu/build/tsan/../../thirdparty/installed/tsan/include/gtest/gtest.h:2288:46
(libkudu_test_main.so+0x0000000030cb)
#19 main
/home/todd/git/kudu/build/tsan/../../src/kudu/util/test_main.cc:89:13
(libkudu_test_main.so+0x000000002927)
Previous write of size 4 at 0x7d30000081dc by thread T4 (mutexes: write M294):
#0 CRYPTO_add_lock /home/todd/git/openssl/crypto/cryptlib.c:633
(libcrypto.so.1.0.0+0x00000006fbb5)
#1 ssl_cert_dup /home/todd/git/openssl/ssl/ssl_cert.c:295
(libssl.so.1.0.0+0x000000064487)
#2 SSL_new /home/todd/git/openssl/ssl/ssl_lib.c:323
(libssl.so.1.0.0+0x000000062cb2)
#3
kudu::security::TlsContext::InitiateHandshake(kudu::security::TlsHandshakeType,
kudu::security::TlsHandshake*) const
/home/todd/git/kudu/build/tsan/../../src/kudu/security/tls_context.cc:395:40
(libsecurity.so+0x000000049f0d)
#4
kudu::security::TestTlsHandshakeBase::RunHandshake(kudu::security::TlsVerificationMode,
kudu::security::TlsVerificationMode)
/home/todd/git/kudu/build/tsan/../../src/kudu/security/tls_handshake-test.cc:91:5
(tls_handshake-test+0x0000004d6bc7)
#5
kudu::security::TestTlsHandshakeConcurrent_TestConcurrentAdoptCert_Test::TestBody()::$_1::operator()()
const
/home/todd/git/kudu/build/tsan/../../src/kudu/security/tls_handshake-test.cc:151:11
(tls_handshake-test+0x0000004d598e)
#6
_ZNSt3__18__invokeIZN4kudu8security55TestTlsHandshakeConcurrent_TestConcurrentAdoptCert_Test8TestBodyEvE3$_1JEEEDTclclsr3std3__1E7forwardIT_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOS5_DpOS6_
/home/todd/git/kudu/thirdparty/installed/tsan/include/c++/v1/type_traits:4287:1
(tls_handshake-test+0x0000004d58eb)
#7 void
std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct,
std::__1::default_delete<std::__1::__thread_struct> >,
kudu::security::TestTlsHandshakeConcurrent_TestConcurrentAdoptCert_Test::TestBody()::$_1>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct,
std::__1::default_delete<std::__1::__thread_struct> >,
kudu::security::TestTlsHandshakeConcurrent_TestConcurrentAdoptCert_Test::TestBody()::$_1>&,
std::__1::__tuple_indices<>)
/home/todd/git/kudu/thirdparty/installed/tsan/include/c++/v1/thread:346
(tls_handshake-test+0x0000004d58eb)
#8 void*
std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct,
std::__1::default_delete<std::__1::__thread_struct> >,
kudu::security::TestTlsHandshakeConcurrent_TestConcurrentAdoptCert_Test::TestBody()::$_1>
>(void*)
/home/todd/git/kudu/thirdparty/installed/tsan/include/c++/v1/thread:356
(tls_handshake-test+0x0000004d58eb)
{code}
(soon followed by use-after-free errors)
> OpenSSL crashes if cert is adopted concurrently with a handshake
> ----------------------------------------------------------------
>
> Key: KUDU-1901
> URL: https://issues.apache.org/jira/browse/KUDU-1901
> Project: Kudu
> Issue Type: Bug
> Components: security
> Affects Versions: 1.3.0
> Reporter: Todd Lipcon
> Assignee: Todd Lipcon
> Priority: Blocker
>
> We saw this in a test case and I was able to reproduce it.
> https://github.com/openssl/openssl/issues/2165 indicates that it's a known
> issue (or expected behavior) of OpenSSL.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)