Skip to content

[Bug] be coredump at ProcessHashTableProbe #13478

@jacktengg

Description

@jacktengg

Search before asking

  • I had searched in the issues and found no similar issues.

Version

master f0dbbe5

What's Wrong?

ubsan build, be coredump when doing inner hash join:

doris::vectorized::ProcessHashTableProbe<doris::vectorized::PrimaryTypeHashTableContext<unsigned int>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>, false>::ProcessHashTableProbe (this=0x7f98b93f5330, join_node=0x7f9922379000, batch_size=992, probe_rows=348) at /home/zcp/repo_center/doris_master/be/src/vec/exec/join/vhash_join_node.cpp:204 #1 0x0000555fe6383e48 in operator()<doris::vectorized::PrimaryTypeHashTableContext<unsigned int>&, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>&, std::integral_constant<bool, false>, std::integral_constant<bool, false> > (_closure=0x7f98b93f5700, arg=..., join_op_variants=..., have_other_join_conjunct=..., probe_ignore_null=...) at /home/zcp/repo_center/doris_master/be/src/vec/exec/join/vhash_join_node.cpp:1034 #2 0x0000555fe64dafa3 in std::invoke_impl<void, doris::vectorized::HashJoinNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*)::<lambda(auto:36&&, auto:37&&, auto:38, auto:39)>, doris::vectorized::PrimaryTypeHashTableContext<unsigned int>&, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>&, std::integral_constant<bool, false>, std::integral_constant<bool, false> >(std::invoke_other, struct {...} &&) (f=...) at /var/local/ldb_toolchain/include/c+/11/bits/invoke.h:61 #3 0x0000555fe64a72ad in std::invoke<doris::vectorized::HashJoinNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*)::<lambda(auto:36&&, auto:37&&, auto:38, auto:39)>, doris::vectorized::PrimaryTypeHashTableContext<unsigned int>&, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>&, std::integral_constant<bool, false>, std::integral_constant<bool, false> >(struct {...} &&) (fn=...) at /var/local/ldb_toolchain/include/c/11/bits/invoke.h:96 #4 0x0000555fe6384385 in std::detail::variant::gen_vtable_impl<std::detail::variant::_Multi_array<std::detail::variant::deduce_visit_result<void> (doris::vectorized::HashJoinNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*)::<lambda(auto:36&&, auto:37&&, auto:38, auto:39)>&&, std::variant<std::monostate, doris::vectorized::SerializedHashTableContext, doris::vectorized::PrimaryTypeHashTableContext<unsigned char>, doris::vectorized::PrimaryTypeHashTableContext<short unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<long unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt128>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt256>, doris::vectorized::FixedKeyHashTableContext<long unsigned int, true>, doris::vectorized::FixedKeyHashTableContext<long unsigned int, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, false> >&, std::variant<std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)2>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)8>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)1>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)4>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)3>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)5>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)7>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)9>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)10> >&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> >&&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> >&&)>, std::integer_sequence<long unsigned int, 4, 0, 0, 0> >::visit_invoke(struct {...} &&, std::variant<std::monostate, doris::vectorized::SerializedHashTableContext, doris::vectorized::PrimaryTypeHashTableContext<unsigned char>, doris::vectorized::PrimaryTypeHashTableContext<unsigned short>, doris::vectorized::PrimaryTypeHashTableContext<unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<unsigned long>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt128>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt256>, doris::vectorized::FixedKeyHashTableContext<unsigned long, true>, doris::vectorized::FixedKeyHashTableContext<unsigned long, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, false> > &, std::variant<std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)2>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)8>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)1>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)4>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)3>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)5>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)7>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)9>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)10> > &, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> > &&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> > && #5 0x0000555fe644b3df in std::do_visit<std::detail::variant::deduce_visit_result<void>, doris::vectorized::HashJoinNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*)::<lambda(auto:36&&, auto:37&&, auto:38, auto:39)>, std::variant<std::monostate, doris::vectorized::SerializedHashTableContext, doris::vectorized::PrimaryTypeHashTableContext<unsigned char>, doris::vectorized::PrimaryTypeHashTableContext<short unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<long unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt128>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt256>, doris::vectorized::FixedKeyHashTableContext<long unsigned int, true>, doris::vectorized::FixedKeyHashTableContext<long unsigned int, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, false> >&, std::variant<std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)2>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)8>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)1>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)4>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)3>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)5>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)7>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)9>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)10> >&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> >, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> > >(struct {...} &&) (visitor=...) at /var/local/ldb_toolchain/include/c/11/variant:1714 #6 0x0000555fe644b5eb in std::visit<doris::vectorized::HashJoinNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*)::<lambda(auto:36&&, auto:37&&, auto:38, auto:39)>, std::variant<std::monostate, doris::vectorized::SerializedHashTableContext, doris::vectorized::PrimaryTypeHashTableContext<unsigned char>, doris::vectorized::PrimaryTypeHashTableContext<short unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<long unsigned int>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt128>, doris::vectorized::PrimaryTypeHashTableContext<doris::vectorized::UInt256>, doris::vectorized::FixedKeyHashTableContext<long unsigned int, true>, doris::vectorized::FixedKeyHashTableContext<long unsigned int, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt128, false>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, true>, doris::vectorized::FixedKeyHashTableContext<doris::vectorized::UInt256, false> >&, std::variant<std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)0>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)2>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)8>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)1>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)4>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)3>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)5>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)7>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)9>, std::integral_constant<doris::TJoinOp::type, (doris::TJoinOp::type)10> >&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> >, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> > >(struct {...} &&) (_visitor=...) at /var/local/ldb_toolchain/include/c+/11/variant:1769 #7 0x0000555fe6481020 in doris::vectorized::HashJoinNode::get_next (this=0x7f9922379000, state=0x7f9922269000, output_block=0x7f9922269ce0, eos=0x7f9922269d68) at /home/zcp/repo_center/doris_master/be/src/vec/exec/join/vhash_join_node.cpp:1016 #8 0x0000555fdf73d7a3 in doris::ExecNode::get_next_after_projects (this=0x7f9922379000, state=0x7f9922269000, block=0x7f9922269ce0, eos=0x7f9922269d68) at /home/zcp/repo_center/doris_master/be/src/exec/exec_node.cpp:863 #9 0x0000555fe647f192 in doris::vectorized::HashJoinNode::get_next (this=0x7f9922269800, state=0x7f9922269000, output_block=0x7f96eecc67e0, eos=0x7f98b93f5c8f) at /home/zcp/repo_center/doris_master/be/src/vec/exec/join/vhash_join_node.cpp:972 #10 0x0000555fdf73d7a3 in doris::ExecNode::get_next_after_projects (this=0x7f9922269800, state=0x7f9922269000, block=0x7f96eecc67e0, eos=0x7f98b93f5c8f) at /home/zcp/repo_center/doris_master/be/src/exec/exec_node.cpp:863 #11 0x0000555fe5e8e9a6 in doris::vectorized::VSortNode::open (this=0x7f968a0e4300, state=0x7f9922269000) at /home/zcp/repo_center/doris_master/be/src/vec/exec/vsort_node.cpp:91 #12 0x0000555fe080e9a4 in doris::PlanFragmentExecutor::open_vectorized_internal (this=0x7f944dcb5070)

What You Expected?

no coredump

How to Reproduce?

tpch q15:

SELECT   s_suppkey,   s_name,   s_address,   s_phone,   total_revenue FROM   supplier,   revenue1 WHERE   s_suppkey = supplier_no   AND total_revenue = (     SELECT max(total_revenue)     FROM
     revenue1   ) ORDER BY   s_suppkey

Anything Else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions