[
https://issues.apache.org/jira/browse/IMPALA-15078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18087106#comment-18087106
]
ASF subversion and git services commented on IMPALA-15078:
----------------------------------------------------------
Commit b0f3623fcb7129d39c5b246508975b5ed7eea3f7 in impala's branch
refs/heads/master from Aleksandr Efimov
[ https://gitbox.apache.org/repos/asf?p=impala.git;h=b0f3623fc ]
IMPALA-15078: Fix TSAN race in data-stream test
The IMPALA-14838 regression test updated
FLAGS_datastream_sender_timeout_ms after DataStreamTest::SetUp() had
already started KrpcDataStreamMgr's maintenance thread. TSAN can report
a race because Maintenance() reads the same flag concurrently.
The longer early-sender timeout is unnecessary here because the test
creates the receiver before starting the sender. Remove the flag update
from the test body so the maintenance thread has no concurrent gflag
writer.
Testing:
git diff --check
Assisted-by: OpenAI Codex
Change-Id: Ied81ad4660e8fb69a443f2c74c6fafc6c99c0c18
Reviewed-on: http://gerrit.cloudera.org:8080/24414
Reviewed-by: Impala Public Jenkins <[email protected]>
Tested-by: Impala Public Jenkins <[email protected]>
> TSAN data race in DataStreamTest
> --------------------------------
>
> Key: IMPALA-15078
> URL: https://issues.apache.org/jira/browse/IMPALA-15078
> Project: IMPALA
> Issue Type: Bug
> Reporter: Balazs Hevele
> Assignee: Aleksandr Efimov
> Priority: Major
> Labels: flaky-test
>
> TSAN data race found in
> DataStreamTest.TotalHasDeferredRpcsTimeIncludesOpenInterval
> ==================
> WARNING: ThreadSanitizer: data race (pid=769298)
> Write of size 4 at 0x0000092b6070 by main thread:
> #0
> impala::DataStreamTest_TotalHasDeferredRpcsTimeIncludesOpenInterval_Test::TestBody()
>
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/data-stream-test.cc:797:38
> (data-stream-test+0x24f7b7e)
> #1 void
> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*)
> /mnt/source/googletest/googletest-1.14.0/googletest/src/gtest.cc:2612:27
> (data-stream-test+0x5ea125c)
> #2 void
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*)
> /mnt/source/googletest/googletest-1.14.0/googletest/src/gtest.cc:2648:52
> (data-stream-test+0x5ea125c)
> #3 main
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/data-stream-test.cc:1045:10
> (data-stream-test+0x24f9860)
> Previous read of size 4 at 0x0000092b6070 by thread T89:
> #0 impala::KrpcDataStreamMgr::Maintenance()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/krpc-data-stream-mgr.cc:413:18
> (data-stream-test+0x2fde0f7)
> #1
> impala::KrpcDataStreamMgr::Init(impala::MemTracker*)::$_4::operator()() const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/krpc-data-stream-mgr.cc:102:3
> (data-stream-test+0x2fe0041)
> #2
> boost::detail::function::void_function_obj_invoker0<impala::KrpcDataStreamMgr::Init(impala::MemTracker*)::$_4,
> void>::invoke(boost::detail::function::function_buffer&)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:158:11
> (data-stream-test+0x2fdfe19)
> #3 boost::function0<void>::operator()() const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763:14
> (data-stream-test+0x3672c31)
> #4 impala::Thread::SuperviseThread(char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/util/thread.cc:397:3
> (data-stream-test+0x385fe3f)
> #5 void boost::_bi::list5<boost::_bi::value<char const*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >,
> boost::_bi::value<impala::ThreadDebugInfo*>,
> boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*>
> >::operator()<void (*)(char const*, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&, boost::function<void
> ()> const&, impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*), boost::_bi::list0>(boost::_bi::type<void>, void
> (*&)(char const*, std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&, boost::function<void ()> const&,
> impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*), boost::_bi::list0&, int)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:531:9
> (data-stream-test+0x38689f5)
> #6 boost::_bi::bind_t<void, void (*)(char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*),
> boost::_bi::list5<boost::_bi::value<char const*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >,
> boost::_bi::value<impala::ThreadDebugInfo*>,
> boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> >
> >::operator()()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
> (data-stream-test+0x3868903)
> #7 boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(char
> const*, std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&, boost::function<void ()> const&,
> impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<char const*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >,
> boost::_bi::value<impala::ThreadDebugInfo*>,
> boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > >
> >::run()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:120:17
> (data-stream-test+0x38684b0)
> #8 thread_proxy
> /mnt/source/boost/boost_1_74_0-p1/libs/thread/src/pthread/thread.cpp:179:37
> (data-stream-test+0x42b0b56)
> Location is global 'fLI::FLAGS_datastream_sender_timeout_ms' of size 4 at
> 0x0000092b6070 (data-stream-test+0x0000092b6070)
> Thread T89 (tid=769592, running) created by main thread at:
> #0 pthread_create <null> (data-stream-test+0x24980b3)
> #1 boost::thread::start_thread_noexcept()
> /mnt/source/boost/boost_1_74_0-p1/libs/thread/src/pthread/thread.cpp:263:39
> (data-stream-test+0x42afe5d)
> #2 boost::thread::thread<void (*)(char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*), char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> >, boost::function<void ()>, impala::ThreadDebugInfo*, impala::Promise<long,
> (impala::PromiseMode)0>*>(void (*)(char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*), char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> >, boost::function<void ()>, impala::ThreadDebugInfo*, impala::Promise<long,
> (impala::PromiseMode)0>*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:424:13
> (data-stream-test+0x3863545)
> #3 impala::Thread::StartThread(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, std::unique_ptr<impala::Thread,
> std::default_delete<impala::Thread> >*, bool)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/util/thread.cc:337:13
> (data-stream-test+0x385f58f)
> #4 impala::Status
> impala::Thread::Create<impala::KrpcDataStreamMgr::Init(impala::MemTracker*)::$_4>(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, impala::KrpcDataStreamMgr::Init(impala::MemTracker*)::$_4 const&,
> std::unique_ptr<impala::Thread, std::default_delete<impala::Thread> >*, bool)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/util/thread.h:74:12
> (data-stream-test+0x2fdba06)
> #5 impala::KrpcDataStreamMgr::Init(impala::MemTracker*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/krpc-data-stream-mgr.cc:102:3
> (data-stream-test+0x2fdb85b)
> #6 impala::DataStreamTest::StartKrpcBackend()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/data-stream-test.cc:624:5
> (data-stream-test+0x2525658)
> #7 impala::DataStreamTest::SetUp()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/data-stream-test.cc:244:5
> (data-stream-test+0x2500ead)
> #8 void
> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*)
> /mnt/source/googletest/googletest-1.14.0/googletest/src/gtest.cc:2612:27
> (data-stream-test+0x5ea125c)
> #9 void
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*)
> /mnt/source/googletest/googletest-1.14.0/googletest/src/gtest.cc:2648:52
> (data-stream-test+0x5ea125c)
> #10 main
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/data-stream-test.cc:1045:10
> (data-stream-test+0x24f9860)
> SUMMARY: ThreadSanitizer: data race
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/data-stream-test.cc:797:38
> in
> impala::DataStreamTest_TotalHasDeferredRpcsTimeIncludesOpenInterval_Test::TestBody()
> ==================
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]