[ https://issues.apache.org/jira/browse/ARROW-17682?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Weston Pace closed ARROW-17682. ------------------------------- Resolution: Duplicate Technically this one came first but closing as a duplicate of ARROW-17687 as it has the PR. Both are heap-use-after-free in ContinueTasksUnlocked and so I am fairly certain they are the same issue. > [CI][C++] Nightly test-ubuntu-20.04-cpp-thread-sanitizer fails > arrow-utility-test around the AsyncTaskScheduler > --------------------------------------------------------------------------------------------------------------- > > Key: ARROW-17682 > URL: https://issues.apache.org/jira/browse/ARROW-17682 > Project: Apache Arrow > Issue Type: Bug > Components: C++, Continuous Integration > Reporter: Raúl Cumplido > Priority: Blocker > Labels: Nightly > Fix For: 10.0.0 > > > The nightly tests for cpp thread sanitizer have been failing with the > following: > {code:java} > [ 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{code} > One example of nightly failures: > [https://github.com/ursacomputing/crossbow/runs/8296567948] > This started when this PR was merged and seems related: > [https://github.com/apache/arrow/pull/13912] -- This message was sent by Atlassian Jira (v8.20.10#820010)