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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]