[
https://issues.apache.org/jira/browse/IMPALA-12193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joe McDonnell resolved IMPALA-12193.
------------------------------------
Fix Version/s: Impala 4.3.0
Resolution: Fixed
> DataCacheTest.SetReadOnly fails for TSAN builds
> -----------------------------------------------
>
> Key: IMPALA-12193
> URL: https://issues.apache.org/jira/browse/IMPALA-12193
> Project: IMPALA
> Issue Type: Bug
> Components: Backend
> Affects Versions: Impala 4.3.0
> Reporter: Joe McDonnell
> Assignee: Joe McDonnell
> Priority: Critical
> Labels: broken-build
> Fix For: Impala 4.3.0
>
>
> The DataCacheTest.SetReadOnly test fails on TSAN due to races around the
> readonly_ variable:
> {noformat}
> WARNING: ThreadSanitizer: data race (pid=519229)
> Write of size 1 at 0x7fff29489528 by main thread:
> #0 impala::io::DataCache::SetDataCacheReadOnly()
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache.cc:1391:13
> (data-cache-test+0x1f9ab61)
> #1
> impala::io::DataCacheBaseTest::MultiThreadedReadWrite(impala::io::DataCache*,
> long, bool, bool, double*, bool)
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache-test.cc:153:27
> (data-cache-test+0x1efdd59)
> #2 impala::io::DataCacheTest_SetReadOnly_Test::TestBody()
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache-test.cc:904:3
> (data-cache-test+0x1ef8be9)
> #3 void
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null>
> (data-cache-test+0x4e7468c)
> #4 __libc_start_main <null> (libc.so.6+0x24082) Previous read of size 1
> at 0x7fff29489528 by thread T767:
> #0 impala::io::DataCache::StoreInternal(impala::io::DataCache::CacheKey
> const&, unsigned char const*, long)
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache.cc:1481:7
> (data-cache-test+0x1f9a6b3)
> #1 impala::io::DataCache::Store(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&, long, long, unsigned
> char const*, long)
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache.cc:1373:10
> (data-cache-test+0x1f9a164)
> #2
> impala::io::DataCacheBaseTest::ThreadFn(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> impala::io::DataCache*, long, impala::CountingBarrier*, int*, long*)
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache-test.cc:292:14
> (data-cache-test+0x1f096cc)
> #3 boost::_mfi::mf6<void, impala::io::DataCacheBaseTest,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, impala::io::DataCache*, long, impala::CountingBarrier*, int*,
> long*>::operator()(impala::io::DataCacheBaseTest*,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, impala::io::DataCache*, long, impala::CountingBarrier*, int*,
> long*) const
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/mem_fn_template.hpp:732:29
> (data-cache-test+0x1f0b33c)
> #4 void
> boost::_bi::list7<boost::_bi::value<impala::io::DataCacheBaseTest*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<impala::io::DataCache*>,
> boost::_bi::value<long>, boost::_bi::value<impala::CountingBarrier*>,
> boost::_bi::value<int*>, boost::_bi::value<long*>
> >::operator()<boost::_mfi::mf6<void, impala::io::DataCacheBaseTest,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, impala::io::DataCache*, long, impala::CountingBarrier*, int*,
> long*>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf6<void,
> impala::io::DataCacheBaseTest, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> impala::io::DataCache*, long, impala::CountingBarrier*, int*, long*>&,
> boost::_bi::list0&, int)
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:676:9
> (data-cache-test+0x1f0b249)
> #5 boost::_bi::bind_t<void, boost::_mfi::mf6<void,
> impala::io::DataCacheBaseTest, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> impala::io::DataCache*, long, impala::CountingBarrier*, int*, long*>,
> boost::_bi::list7<boost::_bi::value<impala::io::DataCacheBaseTest*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<impala::io::DataCache*>,
> boost::_bi::value<long>, boost::_bi::value<impala::CountingBarrier*>,
> boost::_bi::value<int*>, boost::_bi::value<long*> > >::operator()()
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
> (data-cache-test+0x1f0b0f3)
> #6
> boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,
> boost::_mfi::mf6<void, impala::io::DataCacheBaseTest,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, impala::io::DataCache*, long, impala::CountingBarrier*, int*,
> long*>, boost::_bi::list7<boost::_bi::value<impala::io::DataCacheBaseTest*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<impala::io::DataCache*>,
> boost::_bi::value<long>, boost::_bi::value<impala::CountingBarrier*>,
> boost::_bi::value<int*>, boost::_bi::value<long*> > >,
> void>::invoke(boost::detail::function::function_buffer&)
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:158:11
> (data-cache-test+0x1f0ac11)
> #7 boost::function0<void>::operator()() const
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763:14
> (data-cache-test+0x2166bd1)
> #8 impala::Thread::SuperviseThread(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 ()>, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*)
> /home/joemcdonnell/upstream/Impala/be/src/util/thread.cc:360:3
> (data-cache-test+0x2981908)
> #9 void
> boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> 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 (*)(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 ()>, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*),
> boost::_bi::list0>(boost::_bi::type<void>, void
> (*&)(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
> ()>, impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*), boost::_bi::list0&, int)
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:531:9
> (data-cache-test+0x298a76c)
> #10 boost::_bi::bind_t<void, void (*)(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 ()>, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*),
> boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> 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()()
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
> (data-cache-test+0x298a683)
> #11 boost::detail::thread_data<boost::_bi::bind_t<void, void
> (*)(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
> ()>, impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*),
> boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> 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()
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:120:17
> (data-cache-test+0x298a370)
> #12 thread_proxy <null> (data-cache-test+0x3904f36) Location is stack of
> main thread. Thread T767 (tid=520047, running) created by main thread at:
> #0 pthread_create
> /mnt/source/llvm/llvm-5.0.1.src-p5/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:889:3
> (data-cache-test+0x1e8ed83)
> #1 boost::thread::start_thread_noexcept() <null>
> (data-cache-test+0x390423d)
> #2 boost::thread::thread<void (*)(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 ()>, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*),
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> >, std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >, boost::function<void ()>, impala::ThreadDebugInfo*,
> impala::Promise<long, (impala::PromiseMode)0>*>(void
> (*)(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
> ()>, impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*), std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> >, boost::function<void ()>, impala::ThreadDebugInfo*, impala::Promise<long,
> (impala::PromiseMode)0>*)
> /opt/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:424:13
> (data-cache-test+0x2984ec4)
> #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)
> /home/joemcdonnell/upstream/Impala/be/src/util/thread.cc:317:13
> (data-cache-test+0x298128c)
> #4 impala::Status impala::Thread::Create<boost::_bi::bind_t<void,
> boost::_mfi::mf6<void, impala::io::DataCacheBaseTest,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, impala::io::DataCache*, long, impala::CountingBarrier*, int*,
> long*>, boost::_bi::list7<boost::_bi::value<impala::io::DataCacheBaseTest*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<impala::io::DataCache*>,
> boost::_bi::value<long>, boost::_bi::value<impala::CountingBarrier*>,
> boost::_bi::value<int*>, boost::_bi::value<long*> > >
> >(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::_bi::bind_t<void, boost::_mfi::mf6<void,
> impala::io::DataCacheBaseTest, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> impala::io::DataCache*, long, impala::CountingBarrier*, int*, long*>,
> boost::_bi::list7<boost::_bi::value<impala::io::DataCacheBaseTest*>,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<impala::io::DataCache*>,
> boost::_bi::value<long>, boost::_bi::value<impala::CountingBarrier*>,
> boost::_bi::value<int*>, boost::_bi::value<long*> > > const&,
> std::unique_ptr<impala::Thread, std::default_delete<impala::Thread> >*, bool)
> /home/joemcdonnell/upstream/Impala/be/src/util/thread.h:74:12
> (data-cache-test+0x1f092ca)
> #5
> impala::io::DataCacheBaseTest::MultiThreadedReadWrite(impala::io::DataCache*,
> long, bool, bool, double*, bool)
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache-test.cc:142:7
> (data-cache-test+0x1efdb75)
> #6 impala::io::DataCacheTest_SetReadOnly_Test::TestBody()
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache-test.cc:904:3
> (data-cache-test+0x1ef8be9)
> #7 void
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null>
> (data-cache-test+0x4e7468c)
> #8 __libc_start_main <null> (libc.so.6+0x24082)SUMMARY: ThreadSanitizer:
> data race
> /home/joemcdonnell/upstream/Impala/be/src/runtime/io/data-cache.cc:1391:13 in
> impala::io::DataCache::SetDataCacheReadOnly()
> ==================
> {noformat}
> The locking needs some work (or readonly_ needs to be an AtomicBool).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]