Mryange opened a new pull request, #32578:
URL: https://github.com/apache/doris/pull/32578
## Proposed changes
Firstly, an incorrect judgment will prevent PipelineX from being canceled
correctly.
Then, the absence of a check may result in a core dump.
```
*** SIGSEGV address not mapped to object (@0x20) received by PID 3591456
(TID 3598335 OR 0x7fa564451700) from PID 32; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at
/mnt/disk2/yanxuecheng/doris/be/src/common/signal_handler.h:421
1# 0x00007FAAA89D7B50 in /lib64/libc.so.6
2# std::__shared_ptr<doris::QueryContext,
(__gnu_cxx::_Lock_policy)2>::__shared_ptr(std::__shared_ptr<doris::QueryContext,
(__gnu_cxx::_Lock_policy)2> const&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1147
3#
std::shared_ptr<doris::QueryContext>::shared_ptr(std::shared_ptr<doris::QueryContext>
const&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h:150
4# doris::FragmentMgr::cancel_fragment(doris::TUniqueId const&, int,
doris::PPlanFragmentCancelReason const&, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) at
/mnt/disk2/yanxuecheng/doris/be/src/runtime/fragment_mgr.cpp:1045
5#
doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0::operator()() const at
/mnt/disk2/yanxuecheng/doris/be/src/service/internal_service.cpp:582
6# void std::__invoke_impl<void,
doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0&>(std::__invoke_other,
doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
7# std::enable_if<is_invocable_r_v<void,
doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0&>, void>::type std::__invoke_r<void,
doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0&>(doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:117
8# std::_Function_handler<void (),
doris::PInternalService::cancel_plan_fragment(google::protobuf::RpcController*,
doris::PCancelPlanFragmentRequest const*, doris::PCancelPlanFragmentResult*,
google::protobuf::Closure*)::$_0>::_M_invoke(std::_Any_data const&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
9# std::function<void ()>::operator()() const at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
10# doris::WorkThreadPool<false>::work_thread(int) at
/mnt/disk2/yanxuecheng/doris/be/src/util/work_thread_pool.hpp:158
11# void std::__invoke_impl<void, void (doris::WorkThreadPool<false>::*
const&)(int), doris::WorkThreadPool<false>*&, int&>(std::__invoke_memfun_deref,
void (doris::WorkThreadPool<false>::* const&)(int),
doris::WorkThreadPool<false>*&, int&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
12# std::__invoke_result<void (doris::WorkThreadPool<false>::* const&)(int),
doris::WorkThreadPool<false>*&, int&>::type std::__invoke<void
(doris::WorkThreadPool<false>::* const&)(int), doris::WorkThreadPool<false>*&,
int&>(void (doris::WorkThreadPool<false>::* const&)(int),
doris::WorkThreadPool<false>*&, int&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
13# decltype (std::__invoke((*this)._M_pmf,
std::forward<doris::WorkThreadPool<false>*&>({parm#1}),
std::forward<int&>({parm#1}))) std::_Mem_fn_base<void
(doris::WorkThreadPool<false>::*)(int),
true>::operator()<doris::WorkThreadPool<false>*&,
int&>(doris::WorkThreadPool<false>*&, int&) const at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:131
14# void std::__invoke_impl<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)>&, doris::WorkThreadPool<false>*&,
int&>(std::__invoke_other, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)>&, doris::WorkThreadPool<false>*&, int&)
at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
15# std::enable_if<is_invocable_r_v<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)>&, doris::WorkThreadPool<false>*&,
int&>, void>::type std::__invoke_r<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)>&, doris::WorkThreadPool<false>*&,
int&>(std::_Mem_fn<void (doris::WorkThreadPool<false>::*)(int)>&,
doris::WorkThreadPool<false>*&, int&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:117
16# void std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570
17# void std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>::operator()<>() at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629
18# void std::__invoke_impl<void, std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>>(std::__invoke_other, std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>&&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
19# std::__invoke_result<std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>>::type std::__invoke<std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>>(std::_Bind_result<void, std::_Mem_fn<void
(doris::WorkThreadPool<false>::*)(int)> (doris::WorkThreadPool<false>*,
int)>&&) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
20# void std::thread::_Invoker<std::tuple<std::_Bind_result<void,
std::_Mem_fn<void (doris::WorkThreadPool<false>::*)(int)>
(doris::WorkThreadPool<false>*, int)> >
>::_M_invoke<0ul>(std::_Index_tuple<0ul>) at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:253
21# std::thread::_Invoker<std::tuple<std::_Bind_result<void,
std::_Mem_fn<void (doris::WorkThreadPool<false>::*)(int)>
(doris::WorkThreadPool<false>*, int)> > >::operator()() at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:260
22#
std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::_Bind_result<void,
std::_Mem_fn<void (doris::WorkThreadPool<false>::*)(int)>
(doris::WorkThreadPool<false>*, int)> > > >::_M_run() at
/mnt/disk2/yanxuecheng/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:211
23# execute_native_thread_routine at
../../../../../libstdc++-v3/src/c++11/thread.cc:84
24# start_thread in /lib64/libpthread.so.0
25# __clone in /lib64/libc.so.6
```
<!--Describe your changes.-->
## Further comments
If this is a relatively large or complex change, kick off the discussion at
[[email protected]](mailto:[email protected]) by explaining why you
chose the solution you did and what alternatives you considered, etc...
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]