Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Duplicate
-
None
Description
The nightly tests for cpp thread sanitizer have been failing with the following:
[ RUN ] AsyncTaskScheduler.ScanningStress ================== WARNING: ThreadSanitizer: heap-use-after-free (pid=10045) Atomic read of size 1 at 0x7b2400010150 by thread T33: #0 pthread_mutex_lock <null> (arrow-utility-test+0x1ab556) #1 __gthread_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/gthr-default.h:749:12 (libarrow.so.1000+0x1676dd6) #2 std::mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_mutex.h:100:17 (libarrow.so.1000+0x167a52b) #3 std::unique_lock<std::mutex>::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_lock.h:141:17 (libarrow.so.1000+0x1965c33) #4 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&) /arrow/cpp/src/arrow/util/async_util.cc:257:12 (libarrow.so.1000+0x19e8b56) #5 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)::operator()(arrow::Status const&) const /arrow/cpp/src/arrow/util/async_util.cc:247:17 (libarrow.so.1000+0x19e9793) #6 arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:455:9 (libarrow.so.1000+0x19e96b5) #7 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)> >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x19e9634) #8 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #9 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #10 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #11 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #12 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #13 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #14 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #15 arrow::util::ThrottleImpl::Release(int) /arrow/cpp/src/arrow/util/async_util.cc:60:26 (libarrow.so.1000+0x19ed858) #16 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)::operator()(arrow::Status const&) const /arrow/cpp/src/arrow/util/async_util.cc:294:20 (libarrow.so.1000+0x19ea3a6) #17 arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:455:9 (libarrow.so.1000+0x19ea155) #18 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)> >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x19ea0d4) #19 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #20 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #21 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #22 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #23 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #24 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #25 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #26 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #27 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #28 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #29 std::enable_if<std::is_void<void>::value, void>::type arrow::detail::ContinueFuture::operator()<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, void, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&) const /arrow/cpp/src/arrow/util/future.h:134:10 (arrow-utility-test+0x4527cd) #30 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<arrow::internal::Empty>&&, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:188:5 (arrow-utility-test+0x4525e6) #31 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> >::operator()(arrow::Result<arrow::internal::Empty> const&) && /arrow/cpp/src/arrow/util/future.h:545:25 (arrow-utility-test+0x452402) #32 arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > >::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:442:9 (arrow-utility-test+0x45231d) #54 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #55 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #56 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #57 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #58 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #59 std::enable_if<std::is_void<void>::value, void>::type arrow::detail::ContinueFuture::operator()<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, void, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&) const /arrow/cpp/src/arrow/util/future.h:134:10 (arrow-utility-test+0x4527cd) #60 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<arrow::internal::Empty>&&, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:188:5 (arrow-utility-test+0x4525e6) #61 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> >::operator()(arrow::Result<arrow::internal::Empty> const&) && /arrow/cpp/src/arrow/util/future.h:545:25 (arrow-utility-test+0x452402) #62 arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > >::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:442:9 (arrow-utility-test+0x45231d) #63 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > > >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (arrow-utility-test+0x4522a4) #64 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #65 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #66 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #67 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #68 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #69 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #70 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #71 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #72 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #73 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #74 arrow::SleepABitAsync()::$_8::operator()() /arrow/cpp/src/arrow/testing/gtest_util.cc:783:9 (libarrow_testing.so.1000+0x34326e) #75 void std::__invoke_impl<void, arrow::SleepABitAsync()::$_8>(std::__invoke_other, arrow::SleepABitAsync()::$_8&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:14 (libarrow_testing.so.1000+0x3431f0) #76 std::__invoke_result<arrow::SleepABitAsync()::$_8>::type std::__invoke<arrow::SleepABitAsync()::$_8>(arrow::SleepABitAsync()::$_8&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:14 (libarrow_testing.so.1000+0x343100) #77 void std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:244:13 (libarrow_testing.so.1000+0x3430a8) #78 std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:251:11 (libarrow_testing.so.1000+0x343048) #79 std::thread::_State_impl<std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:195:13 (libarrow_testing.so.1000+0x342dff) #80 <null> <null> (libstdc++.so.6+0xd6de3) Mutex M246711 (0x7b2400010150) created at: #0 pthread_mutex_lock <null> (arrow-utility-test+0x1ab556) #1 __gthread_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/gthr-default.h:749:12 (libarrow.so.1000+0x1676dd6) #2 std::mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_mutex.h:100:17 (libarrow.so.1000+0x167a52b) #3 std::unique_lock<std::mutex>::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_lock.h:141:17 (libarrow.so.1000+0x1965c33) #4 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&) /arrow/cpp/src/arrow/util/async_util.cc:257:12 (libarrow.so.1000+0x19e8b56) #5 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)::operator()(arrow::Status const&) const /arrow/cpp/src/arrow/util/async_util.cc:247:17 (libarrow.so.1000+0x19e9793) #6 arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:455:9 (libarrow.so.1000+0x19e96b5) #7 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)> >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x19e9634) #8 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #9 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #10 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #11 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #12 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #13 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #14 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #15 arrow::util::ThrottleImpl::Release(int) /arrow/cpp/src/arrow/util/async_util.cc:60:26 (libarrow.so.1000+0x19ed858) #16 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)::operator()(arrow::Status const&) const /arrow/cpp/src/arrow/util/async_util.cc:294:20 (libarrow.so.1000+0x19ea3a6) #17 arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:455:9 (libarrow.so.1000+0x19ea155) #18 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)> >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x19ea0d4) #19 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #20 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #21 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #22 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #23 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #24 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #25 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #26 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #27 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #28 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #29 std::enable_if<std::is_void<void>::value, void>::type arrow::detail::ContinueFuture::operator()<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, void, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&) const /arrow/cpp/src/arrow/util/future.h:134:10 (arrow-utility-test+0x4527cd) #30 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<arrow::internal::Empty>&&, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:188:5 (arrow-utility-test+0x4525e6) #31 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> >::operator()(arrow::Result<arrow::internal::Empty> const&) && /arrow/cpp/src/arrow/util/future.h:545:25 (arrow-utility-test+0x452402) #32 arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > >::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:442:9 (arrow-utility-test+0x45231d) #33 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > > >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (arrow-utility-test+0x4522a4) #34 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #35 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #36 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #37 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #38 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #39 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #40 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #41 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #42 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #43 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #44 arrow::SleepABitAsync()::$_8::operator()() /arrow/cpp/src/arrow/testing/gtest_util.cc:783:9 (libarrow_testing.so.1000+0x34326e) #45 void std::__invoke_impl<void, arrow::SleepABitAsync()::$_8>(std::__invoke_other, arrow::SleepABitAsync()::$_8&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:14 (libarrow_testing.so.1000+0x3431f0) #46 std::__invoke_result<arrow::SleepABitAsync()::$_8>::type std::__invoke<arrow::SleepABitAsync()::$_8>(arrow::SleepABitAsync()::$_8&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:14 (libarrow_testing.so.1000+0x343100) #47 void std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:244:13 (libarrow_testing.so.1000+0x3430a8) #48 std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:251:11 (libarrow_testing.so.1000+0x343048) #49 std::thread::_State_impl<std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:195:13 (libarrow_testing.so.1000+0x342dff) #50 <null> <null> (libstdc++.so.6+0xd6de3) Mutex M1017385960381356864 is already destroyed. Thread T33 (tid=14479, running) created by main thread at: #0 pthread_create <null> (arrow-utility-test+0x18dfab) #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xd70a8) #2 arrow::SleepABitAsync() /arrow/cpp/src/arrow/testing/gtest_util.cc:781:3 (libarrow_testing.so.1000+0x33cad8) #3 arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_29::operator()() const /arrow/cpp/src/arrow/util/async_util_test.cc:372:39 (arrow-utility-test+0x451976) #4 arrow::util::AsyncTaskScheduler::SimpleTask<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_29>::operator()(arrow::util::AsyncTaskScheduler*) /arrow/cpp/src/arrow/util/async_util.h:182:14 (arrow-utility-test+0x4518ef) #5 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >) /arrow/cpp/src/arrow/util/async_util.cc:269:38 (libarrow.so.1000+0x19e9a05) #6 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::SubmitTaskUnlocked(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >, std::unique_lock<std::mutex>&&) /arrow/cpp/src/arrow/util/async_util.cc:326:5 (libarrow.so.1000+0x19e8388) #7 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >) /arrow/cpp/src/arrow/util/async_util.cc:163:9 (libarrow.so.1000+0x19e676f) #8 bool arrow::util::AsyncTaskScheduler::AddSimpleTask<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_29>(arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_29) /arrow/cpp/src/arrow/util/async_util.h:189:12 (arrow-utility-test+0x4513a1) #9 arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30::operator()() const /arrow/cpp/src/arrow/util/async_util_test.cc:377:9 (arrow-utility-test+0x45104b) #10 std::enable_if<std::is_void<void>::value, void>::type arrow::detail::ContinueFuture::operator()<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, void, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30&&) const /arrow/cpp/src/arrow/util/future.h:133:5 (arrow-utility-test+0x450e50) #11 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<arrow::internal::Empty>&&, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:188:5 (arrow-utility-test+0x450c86) #12 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> >::operator()(arrow::Result<arrow::internal::Empty> const&) && /arrow/cpp/src/arrow/util/future.h:545:25 (arrow-utility-test+0x450aa1) #13 arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> > >::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:442:9 (arrow-utility-test+0x4509ad) #14 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> > > >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (arrow-utility-test+0x450934) #15 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #16 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #17 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #18 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #19 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #20 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions) /arrow/cpp/src/arrow/util/future.cc:68:7 (libarrow.so.1000+0x1ac5bdd) #21 arrow::FutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions) /arrow/cpp/src/arrow/util/future.cc:207:28 (libarrow.so.1000+0x1ac1903) #22 void arrow::Future<arrow::internal::Empty>::AddCallback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> >, arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> > > >(arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> >, arrow::CallbackOptions) const /arrow/cpp/src/arrow/util/future.h:493:12 (arrow-utility-test+0x450381) #23 arrow::Future<arrow::internal::Empty> arrow::Future<arrow::internal::Empty>::Then<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30>, arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30> >, arrow::Future<arrow::internal::Empty> >(arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_30>, arrow::CallbackOptions) const /arrow/cpp/src/arrow/util/future.h:607:5 (arrow-utility-test+0x4501fd) #24 arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_26::operator()() const /arrow/cpp/src/arrow/util/async_util_test.cc:384:65 (arrow-utility-test+0x45006a) #25 arrow::util::AsyncTaskScheduler::SimpleTask<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_26>::operator()(arrow::util::AsyncTaskScheduler*) /arrow/cpp/src/arrow/util/async_util.h:182:14 (arrow-utility-test+0x44ff5f) #26 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >) /arrow/cpp/src/arrow/util/async_util.cc:269:38 (libarrow.so.1000+0x19e9a05) #27 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::SubmitTaskUnlocked(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >, std::unique_lock<std::mutex>&&) /arrow/cpp/src/arrow/util/async_util.cc:326:5 (libarrow.so.1000+0x19e8388) #28 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >) /arrow/cpp/src/arrow/util/async_util.cc:166:7 (libarrow.so.1000+0x19e67fd) #29 bool arrow::util::AsyncTaskScheduler::AddSimpleTask<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_26>(arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_26) /arrow/cpp/src/arrow/util/async_util.h:189:12 (arrow-utility-test+0x432fb1) #30 arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody() /arrow/cpp/src/arrow/util/async_util_test.cc:386:7 (arrow-utility-test+0x432516) #31 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/cpp/googletest_ep-prefix/src/googletest_ep/googletest/src/gtest.cc:2607:10 (libgtestd.so.1.11.0+0xbeac3) #32 main /arrow/cpp/src/arrow/util/logging_test.cc:102:10 (arrow-utility-test+0x8620e6)SUMMARY: ThreadSanitizer: heap-use-after-free /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 in std::__uniq_ptr_impl<arrow::util::AsyncTaskScheduler::Queue, std::default_delete<arrow::util::AsyncTaskScheduler::Queue> >::_M_ptr() const ================== ThreadSanitizer:DEADLYSIGNAL ==10045==ERROR: ThreadSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f9472c8f8e3 bp 0x7f94696bb900 sp 0x7f94696bb7e0 T14479) ==10045==The signal is caused by a READ memory access. ==10045==Hint: address points to the zero page. #0 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&) /arrow/cpp/src/arrow/util/async_util.cc:239:21 (libarrow.so.1000+0x19e88e3) #1 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)::operator()(arrow::Status const&) const /arrow/cpp/src/arrow/util/async_util.cc:247:17 (libarrow.so.1000+0x19e9793) #2 arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:455:9 (libarrow.so.1000+0x19e96b5) #3 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&)::'lambda'()::operator()() const::'lambda'(arrow::Status const&)> >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x19e9634) #4 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #5 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #6 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #7 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #8 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #9 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #10 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #11 arrow::util::ThrottleImpl::Release(int) /arrow/cpp/src/arrow/util/async_util.cc:60:26 (libarrow.so.1000+0x19ed858) #12 arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)::operator()(arrow::Status const&) const /arrow/cpp/src/arrow/util/async_util.cc:294:20 (libarrow.so.1000+0x19ea3a6) #13 arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:455:9 (libarrow.so.1000+0x19ea155) #14 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::DoSubmitTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task, std::default_delete<arrow::util::AsyncTaskScheduler::Task> >)::'lambda'(arrow::Status const&)> >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x19ea0d4) #15 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #16 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #17 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #18 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #19 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #20 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #21 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #22 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #23 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #24 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #25 std::enable_if<std::is_void<void>::value, void>::type arrow::detail::ContinueFuture::operator()<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, void, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&) const /arrow/cpp/src/arrow/util/future.h:134:10 (arrow-utility-test+0x4527cd) #26 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<arrow::internal::Empty>&&, arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:188:5 (arrow-utility-test+0x4525e6) #27 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> >::operator()(arrow::Result<arrow::internal::Empty> const&) && /arrow/cpp/src/arrow/util/future.h:545:25 (arrow-utility-test+0x452402) #28 arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > >::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:442:9 (arrow-utility-test+0x45231d) #29 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28, arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::util::AsyncTaskScheduler_ScanningStress_Test::TestBody()::$_28> > > >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (arrow-utility-test+0x4522a4) #30 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #31 arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper::operator()(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/future.cc:56:9 (libarrow.so.1000+0x1ad5446) #32 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::ConcreteFutureImpl::AddCallback(arrow::internal::FnOnce<void (arrow::FutureImpl const&)>, arrow::CallbackOptions)::SpanWrapper>::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.1000+0x1ad53b4) #33 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/functional.h:140:17 (libarrow.so.1000+0x1ac97ce) #34 arrow::ConcreteFutureImpl::RunOrScheduleCallback(std::shared_ptr<arrow::FutureImpl> const&, arrow::FutureImpl::CallbackRecord&&, bool) /arrow/cpp/src/arrow/util/future.cc:118:7 (libarrow.so.1000+0x1ac860c) #35 arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed(arrow::FutureState) /arrow/cpp/src/arrow/util/future.cc:156:7 (libarrow.so.1000+0x1ac7e19) #36 arrow::ConcreteFutureImpl::DoMarkFinished() /arrow/cpp/src/arrow/util/future.cc:38:27 (libarrow.so.1000+0x1ac593d) #37 arrow::FutureImpl::MarkFinished() /arrow/cpp/src/arrow/util/future.cc:202:60 (libarrow.so.1000+0x1ac17ea) #38 arrow::Future<arrow::internal::Empty>::DoMarkFinished(arrow::Result<arrow::internal::Empty>) /arrow/cpp/src/arrow/util/future.h:658:14 (arrow-utility-test+0x304875) #39 void arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void>(arrow::Status) /arrow/cpp/src/arrow/util/future.h:409:12 (arrow-utility-test+0x2c746d) #40 arrow::SleepABitAsync()::$_8::operator()() /arrow/cpp/src/arrow/testing/gtest_util.cc:783:9 (libarrow_testing.so.1000+0x34326e) #41 void std::__invoke_impl<void, arrow::SleepABitAsync()::$_8>(std::__invoke_other, arrow::SleepABitAsync()::$_8&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:14 (libarrow_testing.so.1000+0x3431f0) #42 std::__invoke_result<arrow::SleepABitAsync()::$_8>::type std::__invoke<arrow::SleepABitAsync()::$_8>(arrow::SleepABitAsync()::$_8&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:14 (libarrow_testing.so.1000+0x343100) #43 void std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:244:13 (libarrow_testing.so.1000+0x3430a8) #44 std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:251:11 (libarrow_testing.so.1000+0x343048) #45 std::thread::_State_impl<std::thread::_Invoker<std::tuple<arrow::SleepABitAsync()::$_8> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:195:13 (libarrow_testing.so.1000+0x342dff) #46 <null> <null> (libstdc++.so.6+0xd6de3) #47 __tsan_thread_start_func <null> (arrow-utility-test+0x18df0c) #48 start_thread <null> (libpthread.so.0+0x8608) #49 clone <null> (libc.so.6+0x11f132)ThreadSanitizer can not provide additional info. SUMMARY: ThreadSanitizer: SEGV /arrow/cpp/src/arrow/util/async_util.cc:239:21 in arrow::util::(anonymous namespace)::AsyncTaskSchedulerImpl::ContinueTasksUnlocked(std::unique_lock<std::mutex>&&) ==10045==ABORTING ThreadSanitizer or leak check failures in /build/cpp/build/test-logs/arrow-utility-test.txt /build/cpp/src/arrow/util
One example of nightly failures:
https://github.com/ursacomputing/crossbow/runs/8296567948
This started when this PR was merged and seems related:
Attachments
Issue Links
- duplicates
-
ARROW-17687 [C++] ScanningStress test is flaky in CI
- Resolved