[
https://issues.apache.org/jira/browse/ARROW-17682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17607612#comment-17607612
]
Raúl Cumplido commented on ARROW-17682:
---------------------------------------
This is still failing. Latest nightly fail here:
https://github.com/ursacomputing/crossbow/actions/runs/3094433335/jobs/5007801508
> [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: Critical
> 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)