[ 
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]

Reply via email to