Skip to content

[C++] Sporadic DCHECK failure in arrow-dataset-scanner-test (2) #32430

Description

@asfimport

Just got this sporadic assertion error:

[ RUN ] TestScannerThreading/TestScanner.CountRowsWithMetadata/3Threaded2d16b1024r
/home/antoine/arrow/dev/cpp/src/arrow/util/future.cc:331: Checkfailed: !IsFutureFinished(state_) Futurealreadymarkedfinished

Stack trace:

#0__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#10x00007ffff4a24859in__GI_abort () atabort.c:79
#20x00007ffff56f635cinarrow::util::CerrLog::~CerrLog (this=0x55555586b330, __in_chrg=<optimizedout>) at /home/antoine/arrow/dev/cpp/src/arrow/util/logging.cc:72
#30x00007ffff56f6378inarrow::util::CerrLog::~CerrLog (this=0x55555586b330, __in_chrg=<optimizedout>) at /home/antoine/arrow/dev/cpp/src/arrow/util/logging.cc:74
#40x00007ffff56f66ddinarrow::util::ArrowLog::~ArrowLog (this=0x7fffebffd970, __in_chrg=<optimizedout>) at /home/antoine/arrow/dev/cpp/src/arrow/util/logging.cc:250
#50x00007ffff56c7af1inarrow::ConcreteFutureImpl::DoMarkFinishedOrFailed (this=0x55555585e910, state=arrow::FutureState::SUCCESS)
at /home/antoine/arrow/dev/cpp/src/arrow/util/future.cc:331
#60x00007ffff56c70e7inarrow::ConcreteFutureImpl::DoMarkFinished (this=0x55555585e910) at /home/antoine/arrow/dev/cpp/src/arrow/util/future.cc:232
#70x00007ffff56c8288inarrow::FutureImpl::MarkFinished (this=0x55555585e910) at /home/antoine/arrow/dev/cpp/src/arrow/util/future.cc:409
#80x00007ffff564e4f7inarrow::Future<arrow::internal::Empty>::DoMarkFinished (this=0x555555896bf0, res=...) at /home/antoine/arrow/dev/cpp/src/arrow/util/future.h:725
#90x00007ffff564c198inarrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, void> (this=0x555555896bf0, s=...)
at /home/antoine/arrow/dev/cpp/src/arrow/util/future.h:476
#100x00007ffff599d045inarrow::compute::(anonymousnamespace)::ScalarAggregateNode::Finish (this=0x555555896b60)
at /home/antoine/arrow/dev/cpp/src/arrow/compute/exec/aggregate_node.cc:255
#110x00007ffff599c422inarrow::compute::(anonymousnamespace)::ScalarAggregateNode::InputReceived (this=0x555555896b60, input=0x5555559077c0, batch=...)
at /home/antoine/arrow/dev/cpp/src/arrow/compute/exec/aggregate_node.cc:176
#120x00007ffff59c8567inoperator() (__closure=0x7fffebffdd40) at /home/antoine/arrow/dev/cpp/src/arrow/compute/exec/exec_plan.cc:531
#130x00007ffff59c873ainarrow::compute::MapNode::SubmitTask(std::function<arrow::Result<arrow::compute::ExecBatch> (arrow::compute::ExecBatch)>, arrow::compute::ExecBatch) (this=0x5555559077c0, map_fn=..., batch=...) at /home/antoine/arrow/dev/cpp/src/arrow/compute/exec/exec_plan.cc:535
#140x00007ffff5a97524inarrow::compute::(anonymousnamespace)::ProjectNode::InputReceived (this=0x5555559077c0, input=0x555555913150, batch=...)
at /home/antoine/arrow/dev/cpp/src/arrow/compute/exec/project_node.cc:111
#150x00007ffff5aa3da2inoperator() (__closure=0x7fffa000aba0) at /home/antoine/arrow/dev/cpp/src/arrow/compute/exec/source_node.cc:119
#160x00007ffff5aaa56finstd::__invoke_impl<arrow::Status, arrow::compute::(anonymousnamespace)::SourceNode::StartProducing()::<lambda()>::<lambda(arrow::util::optional<arrow::compute::ExecBatch>&)>::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/invoke.h:60
#170x00007ffff5aa943cinstd::__invoke_r<arrow::Status, arrow::compute::(anonymousnamespace)::SourceNode::StartProducing()::<lambda()>::<lambda(arrow::util::optional<arrow::compute::ExecBatch>&)>::<lambda()>&>(struct {...} &) (__fn=...) at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/invoke.h:115
#180x00007ffff5aa79cainstd::_Function_handler<arrow::Status(), arrow::compute::(anonymousnamespace)::SourceNode::StartProducing()::<lambda()>::<lambda(arrow::util::optional<arrow::compute::ExecBatch>&)>::<lambda()> >::_M_invoke(conststd::_Any_data &) (__functor=...)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/std_function.h:292
#190x00007ffff59ca6b5instd::function<arrow::Status ()>::operator()() const (this=0x55555593e700)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/std_function.h:622
#200x00007ffff59df33binarrow::detail::ContinueFuture::operator()<std::function<arrow::Status ()>&, , arrow::Status, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, std::function<arrow::Status ()>&) const (this=0x55555593e6f8, next=..., f=...) at /home/antoine/arrow/dev/cpp/src/arrow/util/future.h:150
#210x00007ffff59df19finstd::__invoke_impl<void, arrow::detail::ContinueFuture&, arrow::Future<arrow::internal::Empty>&, std::function<arrow::Status ()>&>(std::__invoke_other, arrow::detail::ContinueFuture&, arrow::Future<arrow::internal::Empty>&, std::function<arrow::Status ()>&) (__f=...)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/invoke.h:60
#220x00007ffff59def33instd::__invoke<arrow::detail::ContinueFuture&, arrow::Future<arrow::internal::Empty>&, std::function<arrow::Status ()>&>(arrow::detail::ContinueFuture&, arrow::Future<arrow::internal::Empty>&, std::function<arrow::Status ()>&) (__fn=...)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/invoke.h:95
#230x00007ffff59deb86instd::_Bind<arrow::detail::ContinueFuture (arrow::Future<arrow::internal::Empty>, std::function<arrow::Status ()>)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) (this=0x55555593e6f8, __args=...) at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/functional:416
#240x00007ffff59de809instd::_Bind<arrow::detail::ContinueFuture (arrow::Future<arrow::internal::Empty>, std::function<arrow::Status ()>)>::operator()<, void>() (
this=0x55555593e6f8) at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/functional:499
#250x00007ffff59de650inarrow::internal::FnOnce<void ()>::FnImpl<std::_Bind<arrow::detail::ContinueFuture (arrow::Future<arrow::internal::Empty>, std::function<arrow::Status ()>)> >::invoke() (this=0x55555593e6f0) at /home/antoine/arrow/dev/cpp/src/arrow/util/functional.h:152
#260x00007ffff5714b51inarrow::internal::FnOnce<void ()>::operator()() && (this=0x7fffebffe1d0) at /home/antoine/arrow/dev/cpp/src/arrow/util/functional.h:140
#270x00007ffff5712befinarrow::internal::WorkerLoop (state=std::shared_ptr<structarrow::internal::ThreadPool::State> (usecount49, weakcount0) = {...}, it=Traceback (mostrecentcalllast):
File "/usr/share/gcc/python/libstdcxx/v6/printers.py", line 339, in to_string
node = self.val['_M_node'].cast(self.nodetype.pointer()).dereference()
AttributeError: 'NoneType' object has no attribute 'pointer'
) at /home/antoine/arrow/dev/cpp/src/arrow/util/thread_pool.cc:247
#28 0x00007ffff5713b24 in operator() (__closure=0x7fffec004f58) at /home/antoine/arrow/dev/cpp/src/arrow/util/thread_pool.cc:418
#29 0x00007ffff571af82 in std::__invoke_impl<void, arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/invoke.h:60
#30 0x00007ffff571af37 in std::__invoke<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()> >(struct {...} &&) (__fn=...)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/bits/invoke.h:95
#31 0x00007ffff571aee4 in std::thread::_Invoker<std::tuple<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (
this=0x7fffec004f58) at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/thread:264
#32 0x00007ffff571ada4 in std::thread::_Invoker<std::tuple<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()> > >::operator()(void) (this=0x7fffec004f58)
at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/thread:271
#33 0x00007ffff571ad08 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()> > > >::_M_run(void)
(this=0x7fffec004f50) at /home/antoine/miniconda3/envs/pyarrow/x86_64-conda-linux-gnu/include/c++/10.3.0/thread:215
#34 0x00007ffff4d0baa3 in std::execute_native_thread_routine (__p=<optimized out>) at ../../../../../libstdc++-v3/src/c++11/thread.cc:82
#35 0x00007ffff42fc609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#36 0x00007ffff4b21133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Other threads are idling.

Reporter: Antoine Pitrou / @pitrou

Note: This issue was originally created as ARROW-17128. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions