This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 7e02566333 [fix](pipeline) fix coredump caused by uncaught exception 
(#21387)
7e02566333 is described below

commit 7e02566333614324707aaf225a169918d4e9725e
Author: TengJianPing <[email protected]>
AuthorDate: Mon Jul 3 10:58:13 2023 +0800

    [fix](pipeline) fix coredump caused by uncaught exception (#21387)
    
    For pipeline engine, ExecNode::create_tree may throw exception sometimes, 
e.g. SELECT MIN(-3.40282347e+38) FROM t0; will throw a exception bacause of 
invalid decimal precision.
    
    *** Query id: 346886bf48494e77-96eeea5361233618 ***
    *** Aborted at 1688101183 (unix time) try "date -d @1688101183" if you are 
using GNU date ***
    *** Current BE git commitID: 2fcb0e090b ***
    *** SIGABRT unknown detail explain (@0x13ef42) received by PID 1306434 (TID 
1306918 OR 0x7ff0763e1700) from PID 1306434; stack trace: ***
    terminate called recursively
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/home/zcp/repo_center/doris_master/doris/be/src/common/signal_handler.h:413
     1# 0x00007FFA8780E090 in /lib/x86_64-linux-gnu/libc.so.6
     2# raise at ../sysdeps/unix/sysv/linux/raise.c:51
     3# abort at /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81
     4# __gnu_cxx::__verbose_terminate_handler() [clone .cold] at 
../../../../libstdc++-v3/libsupc++/vterminate.cc:75
     5# __cxxabiv1::__terminate(void (*)()) at 
../../../../libstdc++-v3/libsupc++/eh_terminate.cc:48
     6# 0x000055B6C30C7401 in /mnt/ssd01/doris-master/VEC_ASAN/be/lib/doris_be
     7# 0x000055B6C30C7554 in /mnt/ssd01/doris-master/VEC_ASAN/be/lib/doris_be
     8# doris::vectorized::create_decimal(unsigned long, unsigned long, bool) 
at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/data_types/data_type_decimal.cpp:167
     9# 
doris::vectorized::DataTypeFactory::create_data_type(doris::TypeDescriptor 
const&, bool) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/data_types/data_type_factory.cpp:185
    10# doris::vectorized::AggFnEvaluator::AggFnEvaluator(doris::TExprNode 
const&) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/exprs/vectorized_agg_fn.cpp:79
    11# std::unique_ptr<doris::vectorized::AggFnEvaluator, 
std::default_delete<doris::vectorized::AggFnEvaluator> > 
doris::vectorized::AggFnEvaluator::create_unique<doris::TExprNode 
const&>(doris::TExprNode const&) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/exprs/vectorized_agg_fn.h:49
    12# doris::vectorized::AggFnEvaluator::create(doris::ObjectPool*, 
doris::TExpr const&, doris::TSortInfo const&, 
doris::vectorized::AggFnEvaluator**) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/exprs/vectorized_agg_fn.cpp:92
    13# doris::vectorized::AggregationNode::init(doris::TPlanNode const&, 
doris::RuntimeState*) at 
/home/zcp/repo_center/doris_master/doris/be/src/vec/exec/vaggregation_node.cpp:158
    14# doris::ExecNode::create_tree_helper(doris::RuntimeState*, 
doris::ObjectPool*, std::vector<doris::TPlanNode, 
std::allocator<doris::TPlanNode> > const&, doris::DescriptorTbl const&, 
doris::ExecNode*, int*, doris::ExecNode**) at 
/home/zcp/repo_center/doris_master/doris/be/src/exec/exec_node.cpp:276
    15# doris::ExecNode::create_tree(doris::RuntimeState*, doris::ObjectPool*, 
doris::TPlan const&, doris::DescriptorTbl const&, doris::ExecNode**) at 
/home/zcp/repo_center/doris_master/doris/be/src/exec/exec_node.cpp:231
    16# 
doris::pipeline::PipelineFragmentContext::prepare(doris::TPipelineFragmentParams
 const&, unsigned long) at 
/home/zcp/repo_center/doris_master/doris/be/src/pipeline/pipeline_fragment_context.cpp:253
    17# doris::FragmentMgr::exec_plan_fragment(doris::TPipelineFragmentParams 
const&, std::function<void (doris::RuntimeState*, doris::Status*)> 
const&)::$_1::operator()(int) const at 
/home/zcp/repo_center/doris_master/doris/be/src/runtime/fragment_mgr.cpp:895
    18# doris::FragmentMgr::exec_plan_fragment(doris::TPipelineFragmentParams 
const&, std::function<void (doris::RuntimeState*, doris::Status*)> 
const&)::$_0::operator()() const at 
/home/zcp/repo_center/doris_master/doris/be/src/runtime/fragment_mgr.cpp:926
    19# void std::__invoke_impl<void, 
doris::FragmentMgr::exec_plan_fragment(doris::TPipelineFragmentParams const&, 
std::function<void (doris::RuntimeState*, doris::Status*)> 
const&)::$_0&>(std::__invoke_other, 
doris::FragmentMgr::exec_plan_fragment(doris::TPipelineFragmentParams const&, 
std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0&) at 
/var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
---
 be/src/pipeline/pipeline_fragment_context.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/be/src/pipeline/pipeline_fragment_context.cpp 
b/be/src/pipeline/pipeline_fragment_context.cpp
index 7c24be8ded..4aaaf7a7ec 100644
--- a/be/src/pipeline/pipeline_fragment_context.cpp
+++ b/be/src/pipeline/pipeline_fragment_context.cpp
@@ -250,8 +250,9 @@ Status PipelineFragmentContext::prepare(const 
doris::TPipelineFragmentParams& re
     _runtime_state->set_desc_tbl(desc_tbl);
 
     // 2. Create ExecNode to build pipeline with PipelineFragmentContext
-    RETURN_IF_ERROR(ExecNode::create_tree(_runtime_state.get(), 
_runtime_state->obj_pool(),
-                                          request.fragment.plan, *desc_tbl, 
&_root_plan));
+    RETURN_IF_ERROR_OR_CATCH_EXCEPTION(
+            ExecNode::create_tree(_runtime_state.get(), 
_runtime_state->obj_pool(),
+                                  request.fragment.plan, *desc_tbl, 
&_root_plan));
 
     // Set senders of exchange nodes before pipeline build
     std::vector<ExecNode*> exch_nodes;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to