Skip to content

[Bug] BE coredump for extreme large string columns #15359

@jacktengg

Description

@jacktengg

Search before asking

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

Version

master 24a994e

What's Wrong?

be coredump when executing the following test sql:

select      /*+ SET_VAR(query_timeout = 600) */ ref_7.`k1` as c0,    ref_8.`p_size` as c1,    ref_7.`v1` as c2 from    regression_test_datatype_p0_string.str_tb as ref_7     left join regression_test_ssb_sf1.part as ref_8     on (ref_7.`k1` = ref_8.`p_name` )     inner join regression_test_datev2_tpch_sf1_p1.supplier as ref_9     on (true) where true order by ref_8.`p_container` limit 79 offset 121

coredump stack:

0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk1/yuejing/projects/doris/be/src/common/signal_handler.h:420
1# 0x00007F0D54185400 in /lib64/libc.so.6
2# __GI_raise in /lib64/libc.so.6
3# __GI_abort in /lib64/libc.so.6
4# _nl_load_domain.cold.0 in /lib64/libc.so.6
5# 0x00007F0D5417DA76 in /lib64/libc.so.6
6# doris::vectorized::PODArray<unsigned char, 4096ul, Allocator<false, false>, 15ul, 16ul>::operator[](long) const in /mnt/disk1/yuejing/projects/doris/output/be/lib/doris_be
7# doris::vectorized::ColumnString::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false>, 15ul, 16ul> const&, unsigned long) const at /mnt/disk1/yuejing/projects/doris/be/src/vec/columns/column_string.cpp:191
8# doris::vectorized::ColumnNullable::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false>, 15ul, 16ul> const&, unsigned long) const at /mnt/disk1/yuejing/projects/doris/be/src/vec/columns/column_nullable.cpp:325
9# doris::vectorized::sort_block(doris::vectorized::Block&, doris::vectorized::Block&, std::vector<doris::vectorized::SortColumnDescription, std::allocator<doris::vectorized::SortColumnDescription> > const&, unsigned long) at /mnt/disk1/yuejing/projects/doris/be/src/vec/core/sort_block.cpp:87
10# doris::vectorized::Sorter::partial_sort(doris::vectorized::Block&, doris::vectorized::Block&) at /mnt/disk1/yuejing/projects/doris/be/src/vec/common/sort/sorter.cpp:116
11# doris::vectorized::TopNSorter::_do_sort(doris::vectorized::Block*) at /mnt/disk1/yuejing/projects/doris/be/src/vec/common/sort/topn_sorter.cpp:57
12# doris::vectorized::TopNSorter::append_block(doris::vectorized::Block*) at /mnt/disk1/yuejing/projects/doris/be/src/vec/common/sort/topn_sorter.cpp:31
13# doris::vectorized::VSortNode::sink(doris::RuntimeState*, doris::vectorized::Block*, bool) at /mnt/disk1/yuejing/projects/doris/be/src/vec/exec/vsort_node.cpp:92
14# doris::vectorized::VSortNode::open(doris::RuntimeState*) at /mnt/disk1/yuejing/projects/doris/be/src/vec/exec/vsort_node.cpp:122
15# doris::PlanFragmentExecutor::open_vectorized_internal() at /mnt/disk1/yuejing/projects/doris/be/src/runtime/plan_fragment_executor.cpp:278
16# doris::PlanFragmentExecutor::open() at /mnt/disk1/yuejing/projects/doris/be/src/runtime/plan_fragment_executor.cpp:250
17# doris::FragmentExecState::execute() at /mnt/disk1/yuejing/projects/doris/be/src/runtime/fragment_mgr.cpp:251
18# doris::FragmentMgr::_exec_actual(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::RuntimeState*, doris::Status*)>) at /mnt/disk1/yuejing/projects/doris/be
/src/runtime/fragment_mgr.cpp:495
19# doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>)::$_3::operator()() const at /mnt/disk
1/yuejing/projects/doris/be/src/runtime/fragment_mgr.cpp:731
20# void std::__invoke_impl<void, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>)::$_3&>(
std::__invoke_other, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>)::$_3&) at /mnt/disk1
/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
21# std::enable_if<is_invocable_r_v<void, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>)
::$3&>, void>::type std::_invoke_r<void, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>
)::$_3&>(doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>)::$_3&) at /mnt/disk1/yuejing/pro
jects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:117
22# std::_Function_handler<void (), doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)>)::$_3>
::_M_invoke(std::_Any_data const&) at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
23# std::function<void ()>::operator()() const at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
24# doris::FunctionRunnable::run() at /mnt/disk1/yuejing/projects/doris/be/src/util/threadpool.cpp:46
25# doris::ThreadPool::dispatch_thread() at /mnt/disk1/yuejing/projects/doris/be/src/util/threadpool.cpp:535
26# void std::_invoke_impl<void, void (doris::ThreadPool::&)(), doris::ThreadPool&>(std::_invoke_memfun_deref, void (doris::ThreadPool::&)(), doris::ThreadPool&) at /mnt/dis
k1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
27# std::_invoke_result<void (doris::ThreadPool::&)(), doris::ThreadPool&>::type std::_invoke<void (doris::ThreadPool::&)(), doris::ThreadPool&>(void (doris::ThreadPool::*&)
(), doris::ThreadPool*&) at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
28# void std::Bind<void (doris::ThreadPool::(doris::ThreadPool))()>::_call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) at /mnt/disk1/yuejing/projects/ldb_toolchain/bi
n/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:420
29# void std::_Bind<void (doris::ThreadPool::(doris::ThreadPool))()>::operator()<, void>() at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../
../../include/c++/11/functional:503
30# void std::_invoke_impl<void, std::_Bind<void (doris::ThreadPool::(doris::ThreadPool))()>&>(std::_invoke_other, std::_Bind<void (doris::ThreadPool::(doris::ThreadPool))()
>&) at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
31# std::enable_if<is_invocable_r_v<void, std::Bind<void (doris::ThreadPool::(doris::ThreadPool))()>&>, void>::type std::_invoke_r<void, std::_Bind<void (doris::ThreadPool::*(
doris::ThreadPool*))()>&>(std::_Bind<void (doris::ThreadPool::(doris::ThreadPool))()>&) at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../
../include/c++/11/bits/invoke.h:117
32# std::_Function_handler<void (), std::_Bind<void (doris::ThreadPool::(doris::ThreadPool))()> >::_M_invoke(std::_Any_data const&) at /mnt/disk1/yuejing/projects/ldb_toolchain/
bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
33# std::function<void ()>::operator()() const at /mnt/disk1/yuejing/projects/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
34# doris::Thread::supervise_thread(void*) at /mnt/disk1/yuejing/projects/doris/be/src/util/thread.cpp:454
35# start_thread in /lib64/libpthread.so.0
36# _GI__clone in /lib64/libc.so.6

What You Expected?

no coredump

How to Reproduce?

No response

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