doris
doris copied to clipboard
[Bug] cast to array function causes be core dump on non vec engine
Search before asking
- [X] I had searched in the issues and found no similar issues.
Version
master
What's Wrong?
select cast([1,2,3] as Array<Int>) causes be core dump on origin exec engine.
#0 0x00007fe034551f47 in Peek (this=0x7fde9c73a350) at /home/disk4/xuyang/work/baidu/bdg/doris/core/thirdparty/installed/include/rapidjson/memorystream.h:45
#1 EncodedInputStream (is=..., this=0x7fde9c73a348) at /home/disk4/xuyang/work/baidu/bdg/doris/core/thirdparty/installed/include/rapidjson/encodedstream.h:73
#2 Parse<0, rapidjson::UTF8<> > (length=140603493010728, str=0x3 <error: Cannot access memory at address 0x3>, this=0x7fde9c73a420) at /home/disk4/xuyang/work/baidu/bdg/doris/core/thirdparty/installed/include/rapidjson/document.h:2430
#3 Parse<0> (length=140603493010728, str=0x3 <error: Cannot access memory at address 0x3>, this=0x7fde9c73a420) at /home/disk4/xuyang/work/baidu/bdg/doris/core/thirdparty/installed/include/rapidjson/document.h:2437
#4 Parse (length=140603493010728, str=0x3 <error: Cannot access memory at address 0x3>, this=0x7fde9c73a420) at /home/disk4/xuyang/work/baidu/bdg/doris/core/thirdparty/installed/include/rapidjson/document.h:2441
#5 doris::ArrayParser::parse (array_val=..., context=0x7fe04f6549d8, str_val=...) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/util/array_parser.h:44
#6 0x00007fe0345452f2 in doris::CastFunctions::cast_to_array_val (context=<optimized out>, val=...) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exprs/cast_functions.cpp:814
#7 0x00007fe0345d2bbe in doris::ScalarFnCall::interpret_eval<doris_udf::CollectionVal> (this=0x7fe157366800, context=<optimized out>, row=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/stl_vector.h:1043
#8 0x00007fe0345cb758 in get_array_val (row=<optimized out>, context=<optimized out>, this=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exprs/scalar_fn_call.cpp:533
#9 doris::ScalarFnCall::get_array_val (this=<optimized out>, context=<optimized out>, row=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exprs/scalar_fn_call.cpp:528
#10 0x00007fe0345a4907 in doris::ExprContext::get_value (this=0x7fe0f2041e00, e=<optimized out>, row=row@entry=0x0, precision=precision@entry=0, scale=scale@entry=0) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exprs/expr_context.cpp:310
#11 0x00007fe034ce9c8b in get_value (row=0x0, this=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exprs/expr_context.h:200
#12 doris::Tuple::materialize_exprs<false> (this=this@entry=0x7fe0fda2c000, row=row@entry=0x0, desc=..., materialize_expr_ctxs=..., pool=pool@entry=0x7fe054cbdab0, non_null_var_len_values=non_null_var_len_values@entry=0x0, total_var_len=0x0)
at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/runtime/tuple.cpp:232
#13 0x00007fe034a33a4f in materialize_exprs (dst_batch=0x7fe054cbda00, tuple_buf=0x7fe0fda2c000 "", row=0x0, exprs=..., this=0x7fe09b034c80) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/runtime/row_batch.h:239
#14 doris::UnionNode::get_next_const (this=this@entry=0x7fe09b034c80, state=state@entry=0x7fe148da5000, row_batch=row_batch@entry=0x7fe054cbda00) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exec/union_node.cpp:226
#15 0x00007fe034a343c7 in doris::UnionNode::get_next (this=0x7fe09b034c80, state=0x7fe148da5000, row_batch=0x7fe054cbda00, eos=0x7fe1461ef549) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/exec/union_node.cpp:258
#16 0x00007fe034d07244 in doris::PlanFragmentExecutor::get_next_internal (this=this@entry=0x7fe1461ef470, batch=batch@entry=0x7fde9c73c918) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/unique_ptr.h:421
#17 0x00007fe034d0bcb1 in doris::PlanFragmentExecutor::open_internal (this=0x7fe1461ef470) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/runtime/plan_fragment_executor.cpp:371
#18 0x00007fe034d0cb15 in doris::PlanFragmentExecutor::open (this=this@entry=0x7fe1461ef470) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/runtime/plan_fragment_executor.cpp:241
#19 0x00007fe034cee1b5 in doris::FragmentExecState::execute (this=0x7fe1461ef400) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/runtime/fragment_mgr.cpp:246
#20 0x00007fe034cf1309 in doris::FragmentMgr::_exec_actual(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>) (this=this@entry=0x7fe03ce44540, exec_state=..., cb=...)
at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/shared_ptr_base.h:1290
#21 0x00007fe034cf18fa in operator() (__closure=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/ext/atomicity.h:109
#22 __invoke_impl<void, doris::FragmentMgr::exec_plan_fragment(const doris::TExecPlanFragmentParams&, doris::FragmentMgr::FinishCallback)::<lambda()>&> (__f=...) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/invoke.h:61
#23 __invoke_r<void, doris::FragmentMgr::exec_plan_fragment(const doris::TExecPlanFragmentParams&, doris::FragmentMgr::FinishCallback)::<lambda()>&> (__fn=...) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/invoke.h:111
#24 std::_Function_handler<void(), doris::FragmentMgr::exec_plan_fragment(const doris::TExecPlanFragmentParams&, doris::FragmentMgr::FinishCallback)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/std_function.h:291
#25 0x00007fe034f97eed in operator() (this=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/std_function.h:556
#26 run (this=<optimized out>) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/util/threadpool.cpp:45
#27 doris::ThreadPool::dispatch_thread (this=0x7fe03cfe3400) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/util/threadpool.cpp:540
#28 0x00007fe034f8c9ef in operator() (this=0x7fe068859b38) at /home/disk4/xuyang/work/baidu/bdg/doris/palo-toolchain/ldb_toolchain/include/c++/11/bits/std_function.h:556
#29 doris::Thread::supervise_thread (arg=0x7fe068859b20) at /home/disk4/xuyang/work/baidu/bdg/doris/core/be/src/util/thread.cpp:408
#30 0x00007fe02fa18aa1 in start_thread () from /lib64/libpthread.so.0
#31 0x00007fe02fd16c4d in clone () from /lib64/libc.so.6
What You Expected?
work well.
How to Reproduce?
set enable_vectorized_engine = false;
select cast([1,2,3] as Array<Int>)
Anything Else?
No response
Are you willing to submit PR?
- [X] Yes I am willing to submit a PR!
Code of Conduct
- [X] I agree to follow this project's Code of Conduct