You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "Joe McDonnell (Jira)" <ji...@apache.org> on 2023/06/12 16:17:00 UTC

[jira] [Resolved] (IMPALA-12193) DataCacheTest.SetReadOnly fails for TSAN builds

     [ 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: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org