You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by "westonpace (via GitHub)" <gi...@apache.org> on 2023/04/18 04:36:02 UTC

[GitHub] [arrow] westonpace commented on issue #32570: [C++] Segmentation fault on arrow-compute-hash-join-node-test on macos nightlies

westonpace commented on issue #32570:
URL: https://github.com/apache/arrow/issues/32570#issuecomment-1512421300

   Captured a stack trace.  Leaving it here for future reference for myself:
   
   ```
   [==========] Running 1 test from 1 test suite.
   [----------] Global test environment set-up.
   [----------] 1 test from HashJoin
   [ RUN      ] HashJoin.Random
   Process 1223 stopped
   * thread #2, stop reason = EXC_BAD_ACCESS (code=1, address=0x100944000)
       frame #0: 0x00000001025a723c libarrow_acero.1200.dylib`std::__1::enable_if<std::is_trivially_copyable_v<unsigned long long>, unsigned long long>::type arrow::util::SafeLoad<unsigned long long>(unaligned=0x0000000100943ffa) at ubsan.h:66:3
      63  	template <typename T>
      64  	inline std::enable_if_t<std::is_trivially_copyable_v<T>, T> SafeLoad(const T* unaligned) {
      65  	  std::remove_const_t<T> ret;
   -> 66  	  std::memcpy(&ret, unaligned, sizeof(T));
      67  	  return ret;
      68  	}
      69  	
   Target 0: (arrow-acero-hash-join-node-test) stopped.
   (lldb) bt
   * thread #2, stop reason = EXC_BAD_ACCESS (code=1, address=0x100944000)
     * frame #0: 0x00000001025a723c libarrow_acero.1200.dylib`std::__1::enable_if<std::is_trivially_copyable_v<unsigned long long>, unsigned long long>::type arrow::util::SafeLoad<unsigned long long>(unaligned=0x0000000100943ffa) at ubsan.h:66:3
       frame #1: 0x000000010eee6ea9 libarrow.1200.dylib`arrow::compute::ExecBatchBuilder::AppendSelected(this=0x0000700004c3f760, i=55, ptr="fafPS]by^", num_bytes=9)::$_7::operator()(int, unsigned char const*, unsigned int) const at light_array.cc:605:56
       frame #2: 0x000000010eedc680 libarrow.1200.dylib`void arrow::compute::ExecBatchBuilder::Visit<arrow::compute::ExecBatchBuilder::AppendSelected(std::__1::shared_ptr<arrow::ArrayData> const&, arrow::compute::ResizableArrayData*, int, unsigned short const*, arrow::MemoryPool*)::$_7>(column=std::__1::shared_ptr<arrow::ArrayData>::element_type @ 0x0000600002d15c98 strong=2 weak=1, num_rows=59, row_ids=0x000000010c0be7b8, process_value_fn=(unnamed class) @ 0x0000700004c3f760)::$_7) at light_array.cc:472:7
       frame #3: 0x000000010eedaaea libarrow.1200.dylib`arrow::compute::ExecBatchBuilder::AppendSelected(source=std::__1::shared_ptr<arrow::ArrayData>::element_type @ 0x0000600002d15c98 strong=2 weak=1, target=0x0000000108a04800, num_rows_to_append=60, row_ids=0x000000010c0be7b8, pool=0x00000001108a7f48) at light_array.cc:598:5
       frame #4: 0x000000010eedd47e libarrow.1200.dylib`arrow::compute::ExecBatchBuilder::AppendSelected(this=0x00000001018627d0, pool=0x00000001108a7f48, batch=0x0000700004c40420, num_rows_to_append=60, row_ids=0x000000010c0be7b8, num_cols=4, col_ids=0x0000600000034340) at light_array.cc:710:5
       frame #5: 0x0000000102581851 libarrow_acero.1200.dylib`arrow::acero::JoinResultMaterialize::Append(this=0x0000000101862780, key_and_payload=0x0000700004c40420, num_rows_to_append=60, row_ids=0x000000010c0be7b8, key_ids=0x000000010c0bf008, payload_ids=0x000000010c0c0058, num_rows_appended=0x0000700004c3fe10) at swiss_join.cc:1640:5
       frame #6: 0x00000001025bb4f2 libarrow_acero.1200.dylib`arrow::Status arrow::acero::JoinResultMaterialize::Append<arrow::acero::JoinProbeProcessor::OnNextBatch(long long, arrow::compute::ExecBatch const&, arrow::util::TempVectorStack*, std::__1::vector<arrow::compute::KeyColumnArray, std::__1::allocator<arrow::compute::KeyColumnArray> >*)::$_18>(this=0x0000700004c3fe58, num_rows_to_append_left=60, offset=0, num_rows_appended=0x0000700004c3fe10)::$_18)::'lambda'(int, int, int*)::operator()(int, int, int*) const at swiss_join_internal.h:613:18
       frame #7: 0x00000001025bb0b3 libarrow_acero.1200.dylib`arrow::Status arrow::acero::JoinResultMaterialize::AppendAndOutput<arrow::Status arrow::acero::JoinResultMaterialize::Append<arrow::acero::JoinProbeProcessor::OnNextBatch(long long, arrow::compute::ExecBatch const&, arrow::util::TempVectorStack*, std::__1::vector<arrow::compute::KeyColumnArray, std::__1::allocator<arrow::compute::KeyColumnArray> >*)::$_18>(arrow::compute::ExecBatch const&, int, unsigned short const*, unsigned int const*, unsigned int const*, arrow::acero::JoinProbeProcessor::OnNextBatch(long long, arrow::compute::ExecBatch const&, arrow::util::TempVectorStack*, std::__1::vector<arrow::compute::KeyColumnArray, std::__1::allocator<arrow::compute::KeyColumnArray> >*)::$_18)::'lambda'(int, int, int*), arrow::acero::JoinProbeProcessor::OnNextBatch(long long, arrow::compute::ExecBatch const&, arrow::util::TempVectorStack*, std::__1::vector<arrow::compute::KeyColumnArray, std::__1::allocator<arrow::compute::KeyCo
 lumnArray> >*)::$_18>(this=0x0000000101862780, num_rows_to_append=60, append_rows_fn=0x0000700004c3fe58, output_batch_fn=0x0000700004c3fec8)::$_18 const&, arrow::acero::JoinProbeProcessor::OnNextBatch(long long, arrow::compute::ExecBatch const&, arrow::util::TempVectorStack*, std::__1::vector<arrow::compute::KeyColumnArray, std::__1::allocator<arrow::compute::KeyColumnArray> >*)::$_18 const&) at swiss_join_internal.h:567:7
       frame #8: 0x00000001025848d8 libarrow_acero.1200.dylib`arrow::Status arrow::acero::JoinResultMaterialize::Append<arrow::acero::JoinProbeProcessor::OnNextBatch(long long, arrow::compute::ExecBatch const&, arrow::util::TempVectorStack*, std::__1::vector<arrow::compute::KeyColumnArray, std::__1::allocator<arrow::compute::KeyColumnArray> >*)::$_18>(this=0x0000000101862780, key_and_payload=0x0000700004c40420, num_rows_to_append=60, row_ids=0x000000010c0be7b8, key_ids=0x000000010c0bf008, payload_ids=0x000000010c0c0058, output_batch_fn=(unnamed class) @ 0x0000700004c3fec8)::$_18) at swiss_join_internal.h:610:12
       frame #9: 0x000000010258429f libarrow_acero.1200.dylib`arrow::acero::JoinProbeProcessor::OnNextBatch(this=0x0000000101860d70, thread_id=4, keypayload_batch=0x0000700004c40420, temp_stack=0x0000000100e1de38, temp_column_arrays=0x0000000101862838 size=3) at swiss_join.cc:1993:9
       frame #10: 0x000000010258bcf4 libarrow_acero.1200.dylib`arrow::acero::SwissJoin::ProbeSingleBatch(this=0x0000000101860600, thread_index=4, batch=ExecBatch @ 0x0000700004c40578) at swiss_join.cc:2144:26
       frame #11: 0x00000001024a3ea9 libarrow_acero.1200.dylib`arrow::acero::HashJoinNode::Init(this=0x0000000101864588, thread_index=4, task_id=276)::'lambda'(unsigned long, long long)::operator()(unsigned long, long long) const at hash_join_node.cc:964:25
       frame #12: 0x00000001024a3dd9 libarrow_acero.1200.dylib`decltype(__f=0x0000000101864588, __args=0x0000700004c407a8, __args=0x0000700004c407a0)::'lambda'(unsigned long, long long)&>(fp)(static_cast<unsigned long>(fp0), static_cast<long long>(fp0))) std::__1::__invoke<arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long)&, unsigned long, long long>(arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long)&, unsigned long&&, long long&&) at type_traits:3918:1
       frame #13: 0x00000001024a3d6a libarrow_acero.1200.dylib`arrow::Status std::__1::__invoke_void_return_wrapper<arrow::Status, false>::__call<arrow::acero::HashJoinNode::Init(__args=0x0000000101864588, __args=0x0000700004c407a8, __args=0x0000700004c407a0)::'lambda'(unsigned long, long long)&, unsigned long, long long>(arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long)&, unsigned long&&, long long&&) at invoke.h:30:16
       frame #14: 0x00000001024a3cfa libarrow_acero.1200.dylib`std::__1::__function::__alloc_func<arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long), std::__1::allocator<arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long)>, arrow::Status (unsigned long, long long)>::operator(this=0x0000000101864588, __arg=0x0000700004c407a8, __arg=0x0000700004c407a0)(unsigned long&&, long long&&) at function.h:178:16
       frame #15: 0x00000001024a29d9 libarrow_acero.1200.dylib`std::__1::__function::__func<arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long), std::__1::allocator<arrow::acero::HashJoinNode::Init()::'lambda'(unsigned long, long long)>, arrow::Status (unsigned long, long long)>::operator(this=0x0000000101864580, __arg=0x0000700004c407a8, __arg=0x0000700004c407a0)(unsigned long&&, long long&&) at function.h:352:12
       frame #16: 0x00000001025c2192 libarrow_acero.1200.dylib`std::__1::__function::__value_func<arrow::Status (unsigned long, long long)>::operator(this=0x0000000101864580, __args=0x0000700004c407a8, __args=0x0000700004c407a0)(unsigned long&&, long long&&) const at function.h:505:16
       frame #17: 0x00000001025bd575 libarrow_acero.1200.dylib`std::__1::function<arrow::Status (unsigned long, long long)>::operator(this= Lambda in File hash_join_node.cc at Line 944, __arg=4, __arg=276)(unsigned long, long long) const at function.h:1182:12
       frame #18: 0x00000001025bd414 libarrow_acero.1200.dylib`arrow::acero::TaskSchedulerImpl::ExecuteTask(this=0x0000000100e1cc10, thread_id=4, group_id=5, task_id=276, task_group_finished=0x0000700004c40893) at task_util.cc:215:5
       frame #19: 0x00000001025c4be0 libarrow_acero.1200.dylib`arrow::acero::TaskSchedulerImpl::ScheduleMore(this=0x000060000216c168, thread_id=4)::$_0::operator()(unsigned long) const at task_util.cc:366:5
       frame #20: 0x00000001025c4ace libarrow_acero.1200.dylib`decltype(__f=0x000060000216c168, __args=0x0000700004c40a28)::$_0&>(fp)(static_cast<unsigned long>(fp0))) std::__1::__invoke<arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0&, unsigned long>(arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0&, unsigned long&&) at type_traits:3918:1
       frame #21: 0x00000001025c4a75 libarrow_acero.1200.dylib`arrow::Status std::__1::__invoke_void_return_wrapper<arrow::Status, false>::__call<arrow::acero::TaskSchedulerImpl::ScheduleMore(__args=0x000060000216c168, __args=0x0000700004c40a28)::$_0&, unsigned long>(arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0&, unsigned long&&) at invoke.h:30:16
       frame #22: 0x00000001025c4a25 libarrow_acero.1200.dylib`std::__1::__function::__alloc_func<arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0, std::__1::allocator<arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0>, arrow::Status (unsigned long)>::operator(this=0x000060000216c168, __arg=0x0000700004c40a28)(unsigned long&&) at function.h:178:16
       frame #23: 0x00000001025c3704 libarrow_acero.1200.dylib`std::__1::__function::__func<arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0, std::__1::allocator<arrow::acero::TaskSchedulerImpl::ScheduleMore(unsigned long, int)::$_0>, arrow::Status (unsigned long)>::operator(this=0x000060000216c160, __arg=0x0000700004c40a28)(unsigned long&&) at function.h:352:12
       frame #24: 0x00000001000d6a7d arrow-acero-hash-join-node-test`std::__1::__function::__value_func<arrow::Status (unsigned long)>::operator(this=0x000060000216c160, __args=0x0000700004c40a28)(unsigned long&&) const at function.h:505:16
       frame #25: 0x00000001000d67e0 arrow-acero-hash-join-node-test`std::__1::function<arrow::Status (unsigned long)>::operator(this=0x000060000216c160, __arg=4)(unsigned long) const at function.h:1182:12
       frame #26: 0x0000000102520fe4 libarrow_acero.1200.dylib`arrow::acero::QueryContext::ScheduleTask(this=0x000060000216c150)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2::operator()() const at query_context.cc:73:12
       frame #27: 0x0000000102520f83 libarrow_acero.1200.dylib`decltype(__f=0x000060000216c150)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2&>(fp)()) std::__1::__invoke<arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2&>(arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2&) at type_traits:3918:1
       frame #28: 0x0000000102520f30 libarrow_acero.1200.dylib`arrow::Status std::__1::__invoke_void_return_wrapper<arrow::Status, false>::__call<arrow::acero::QueryContext::ScheduleTask(__args=0x000060000216c150)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2&>(arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2&) at invoke.h:30:16
       frame #29: 0x0000000102520ef0 libarrow_acero.1200.dylib`std::__1::__function::__alloc_func<arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2, std::__1::allocator<arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2>, arrow::Status ()>::operator(this=0x000060000216c150)() at function.h:178:16
       frame #30: 0x000000010251fc37 libarrow_acero.1200.dylib`std::__1::__function::__func<arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2, std::__1::allocator<arrow::acero::QueryContext::ScheduleTask(std::__1::function<arrow::Status (unsigned long)>, std::__1::basic_string_view<char, std::__1::char_traits<char> >)::$_2>, arrow::Status ()>::operator(this=0x000060000216c140)() at function.h:352:12
       frame #31: 0x00000001022ecfb5 libarrow_acero.1200.dylib`std::__1::__function::__value_func<arrow::Status ()>::operator(this=0x000060000263ddd0)() const at function.h:505:16
       frame #32: 0x00000001022e8b23 libarrow_acero.1200.dylib`std::__1::function<arrow::Status ()>::operator(this=0x000060000263ddd0)() const at function.h:1182:12
       frame #33: 0x000000010251d9ed libarrow_acero.1200.dylib`std::__1::enable_if<((!(std::is_void<arrow::Status>::value)) && (!(is_future<arrow::Status>::value))) && ((!(arrow::Future<arrow::internal::Empty>::is_empty)) || (std::is_same<arrow::Status, arrow::Status>::value)), void>::type arrow::detail::ContinueFuture::operator(this=0x000060000263ddb0, next=Future<arrow::internal::Empty> @ 0x0000700004c40c38, f=0x000060000263ddd0)<std::__1::function<arrow::Status ()>&, arrow::Status, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status ()>&) const at future.h:150:23
       frame #34: 0x000000010251d90e libarrow_acero.1200.dylib`decltype(__f=0x000060000263ddb0, __args=0x000060000263ddc0, __args=0x000060000263ddd0)(static_cast<arrow::Future<arrow::internal::Empty>&>(fp0), static_cast<std::__1::function<arrow::Status ()>&>(fp0))) std::__1::__invoke<arrow::detail::ContinueFuture&, arrow::Future<arrow::internal::Empty>&, std::__1::function<arrow::Status ()>&>(arrow::detail::ContinueFuture&, arrow::Future<arrow::internal::Empty>&, std::__1::function<arrow::Status ()>&) at type_traits:3918:1
       frame #35: 0x000000010251d8ca libarrow_acero.1200.dylib`std::__1::__bind_return<arrow::detail::ContinueFuture, std::__1::tuple<arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status ()> >, std::__1::tuple<>, __is_valid_bind_return<arrow::detail::ContinueFuture, std::__1::tuple<arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status ()> >, std::__1::tuple<> >::value>::type std::__1::__apply_functor<arrow::detail::ContinueFuture, std::__1::tuple<arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status (__f=0x000060000263ddb0, __bound_args=size=2, (null)=__tuple_indices<0, 1> @ 0x0000700004c40c98, __args=size=0)> >, 0ul, 1ul, std::__1::tuple<> >(arrow::detail::ContinueFuture&, std::__1::tuple<arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status ()> >&, std::__1::__tuple_indices<0ul, 1ul>, std::__1::tuple<>&&) at bind.h:257:12
       frame #36: 0x000000010251d860 libarrow_acero.1200.dylib`std::__1::__bind_return<arrow::detail::ContinueFuture, std::__1::tuple<arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status ()> >, std::__1::tuple<>, __is_valid_bind_return<arrow::detail::ContinueFuture, std::__1::tuple<arrow::Future<arrow::internal::Empty>, std::__1::function<arrow::Status ()> >, std::__1::tuple<> >::value>::type std::__1::__bind<arrow::detail::ContinueFuture, arrow::Future<arrow::internal::Empty>&, std::__1::function<arrow::Status (this=0x000060000263ddb0)> >::operator()<>() at bind.h:292:20
       frame #37: 0x000000010251d7f1 libarrow_acero.1200.dylib`arrow::internal::FnOnce<void ()>::FnImpl<std::__1::__bind<arrow::detail::ContinueFuture, arrow::Future<arrow::internal::Empty>&, std::__1::function<arrow::Status (this=0x000060000263dda0)> > >::invoke() at functional.h:152:42
       frame #38: 0x000000010ec7140a libarrow.1200.dylib`arrow::internal::FnOnce<void ()>::operator(this=0x0000700004c40e38)() && at functional.h:140:17
       frame #39: 0x000000010ec82c91 libarrow.1200.dylib`arrow::internal::WorkerLoop(state=std::__1::shared_ptr<arrow::internal::ThreadPool::State>::element_type @ 0x0000000100e1dc28 strong=25 weak=2, it=std::__1::list<std::__1::thread, std::__1::allocator<std::__1::thread> >::iterator @ 0x0000700004c40ed8) at thread_pool.cc:269:11
       frame #40: 0x000000010ec8293d libarrow.1200.dylib`arrow::internal::ThreadPool::LaunchWorkersUnlocked(this=0x0000600000c43548)::$_6::operator()() const at thread_pool.cc:430:7
       frame #41: 0x000000010ec828b5 libarrow.1200.dylib`decltype(__f=0x0000600000c43548)::$_6>(fp)()) std::__1::__invoke<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_6>(arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_6&&) at type_traits:3918:1
       frame #42: 0x000000010ec82855 libarrow.1200.dylib`void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_6>(__t=size=2, (null)=__tuple_indices<> @ 0x0000700004c40f68)::$_6>&, std::__1::__tuple_indices<>) at thread:287:5
       frame #43: 0x000000010ec82082 libarrow.1200.dylib`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::$_6> >(__vp=0x0000600000c43540) at thread:298:5
       frame #44: 0x00007ff800bd04e1 libsystem_pthread.dylib`_pthread_start + 125
       frame #45: 0x00007ff800bcbf6b libsystem_pthread.dylib`thread_start + 15
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org