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]