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]

Reply via email to