yiguolei opened a new pull request, #28106:
URL: https://github.com/apache/doris/pull/28106

   ## Proposed changes
   
   _child_block in nest loop join , table value function, repeat node will be 
shared between ExecNode and related operator, but it should not be a unique ptr 
in operator, it belongs to exec node.
   
   It will double free the block, if operator's close method is not called 
correctly.
   
   It should be a shared ptr, then it will not core even if the opeartor's 
close method is not called.
   
   ==30143==ERROR: AddressSanitizer: heap-use-after-free on address 
0x61b0029a31d8 at pc 0x557c0b9cbf45 bp 0x7f3032029ed0 sp 0x7f3032029ec8
   00:03:16   READ of size 8 at 0x61b0029a31d8 thread T284 (WithoutGroupTas)
   00:03:16       #0 0x557c0b9cbf44 in std::_Bvector_base<std::allocator<bool> 
>::_M_deallocate() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_bvector.h:555:23
   00:03:16       #1 0x557c0b9cbf44 in std::_Bvector_base<std::allocator<bool> 
>::~_Bvector_base() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_bvector.h:543:15
   00:03:16       #2 0x557c0b9cbf44 in doris::vectorized::Block::~Block() 
/root/doris/be/src/vec/core/block.h:71:7
   00:03:16       #3 0x557c0b9cbf44 in 
std::default_delete<doris::vectorized::Block>::operator()(doris::vectorized::Block*)
 const 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:85:2
   00:03:16       #4 0x557c0b9cbf44 in 
std::unique_ptr<doris::vectorized::Block, 
std::default_delete<doris::vectorized::Block> >::~unique_ptr() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:361:4
   00:03:16       #5 0x557c2b94d409 in 
doris::pipeline::StatefulOperator<doris::pipeline::NestLoopJoinProbeOperatorBuilder>::~StatefulOperator()
 /root/doris/be/src/pipeline/exec/operator.h:441:41
   00:03:16       #6 0x557c2b94d409 in void 
std::destroy_at<doris::pipeline::NestLoopJoinProbeOperator>(doris::pipeline::NestLoopJoinProbeOperator*)
 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:88:15
   00:03:16       #7 0x557c2b94d409 in void 
std::allocator_traits<std::allocator<doris::pipeline::NestLoopJoinProbeOperator>
 
>::destroy<doris::pipeline::NestLoopJoinProbeOperator>(std::allocator<doris::pipeline::NestLoopJoinProbeOperator>&,
 doris::pipeline::NestLoopJoinProbeOperator*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h:533:4
   00:03:16       #8 0x557c2b94d409 in 
std::_Sp_counted_ptr_inplace<doris::pipeline::NestLoopJoinProbeOperator, 
std::allocator<doris::pipeline::NestLoopJoinProbeOperator>, 
(__gnu_cxx::_Lock_policy)2>::_M_dispose() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:528:2
   00:03:16       #9 0x557c2b8bae0d in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:168:6
   00:03:16       #10 0x557c2b8bae0d in 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:702:11
   00:03:16       #11 0x557c2b8bae0d in 
std::__shared_ptr<doris::pipeline::OperatorBase, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1149:31
   00:03:16       #12 0x557c2b8bae0d in void 
std::destroy_at<std::shared_ptr<doris::pipeline::OperatorBase> 
>(std::shared_ptr<doris::pipeline::OperatorBase>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:88:15
   00:03:16       #13 0x557c2b8bae0d in void 
std::_Destroy<std::shared_ptr<doris::pipeline::OperatorBase> 
>(std::shared_ptr<doris::pipeline::OperatorBase>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:138:7
   00:03:16       #14 0x557c2b8bae0d in void 
std::_Destroy_aux<false>::__destroy<std::shared_ptr<doris::pipeline::OperatorBase>*>(std::shared_ptr<doris::pipeline::OperatorBase>*,
 std::shared_ptr<doris::pipeline::OperatorBase>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:152:6
   00:03:16       #15 0x557c2b8bae0d in void 
std::_Destroy<std::shared_ptr<doris::pipeline::OperatorBase>*>(std::shared_ptr<doris::pipeline::OperatorBase>*,
 std::shared_ptr<doris::pipeline::OperatorBase>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:184:7
   00:03:16       #16 0x557c2b8bae0d in void 
std::_Destroy<std::shared_ptr<doris::pipeline::OperatorBase>*, 
std::shared_ptr<doris::pipeline::OperatorBase> 
>(std::shared_ptr<doris::pipeline::OperatorBase>*, 
std::shared_ptr<doris::pipeline::OperatorBase>*, 
std::allocator<std::shared_ptr<doris::pipeline::OperatorBase> >&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h:746:7
   00:03:16       #17 0x557c2b8bae0d in 
std::vector<std::shared_ptr<doris::pipeline::OperatorBase>, 
std::allocator<std::shared_ptr<doris::pipeline::OperatorBase> > >::~vector() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:680:2
   00:03:16       #18 0x557c2b8bae0d in doris::pipeline::Pipeline::~Pipeline() 
/root/doris/be/src/pipeline/pipeline.h:46:7
   00:03:16       #19 0x557c2b87bf30 in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:168:6
   00:03:16       #20 0x557c2b87bf30 in 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:702:11
   00:03:16       #21 0x557c2b87bf30 in 
std::__shared_ptr<doris::pipeline::Pipeline, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1149:31
   00:03:16       #22 0x557c2b87bf30 in void 
std::destroy_at<std::shared_ptr<doris::pipeline::Pipeline> 
>(std::shared_ptr<doris::pipeline::Pipeline>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:88:15
   00:03:16       #23 0x557c2b87bf30 in void 
std::_Destroy<std::shared_ptr<doris::pipeline::Pipeline> 
>(std::shared_ptr<doris::pipeline::Pipeline>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:138:7
   00:03:16       #24 0x557c2b87bf30 in void 
std::_Destroy_aux<false>::__destroy<std::shared_ptr<doris::pipeline::Pipeline>*>(std::shared_ptr<doris::pipeline::Pipeline>*,
 std::shared_ptr<doris::pipeline::Pipeline>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:152:6
   00:03:16       #25 0x557c2b87bf30 in void 
std::_Destroy<std::shared_ptr<doris::pipeline::Pipeline>*>(std::shared_ptr<doris::pipeline::Pipeline>*,
 std::shared_ptr<doris::pipeline::Pipeline>*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:184:7
   00:03:16       #26 0x557c2b87bf30 in void 
std::_Destroy<std::shared_ptr<doris::pipeline::Pipeline>*, 
std::shared_ptr<doris::pipeline::Pipeline> 
>(std::shared_ptr<doris::pipeline::Pipeline>*, 
std::shared_ptr<doris::pipeline::Pipeline>*, 
std::allocator<std::shared_ptr<doris::pipeline::Pipeline> >&) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h:746:7
   00:03:16       #27 0x557c2b87bf30 in 
std::vector<std::shared_ptr<doris::pipeline::Pipeline>, 
std::allocator<std::shared_ptr<doris::pipeline::Pipeline> > >::~vector() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:680:2
   00:03:16       #28 0x557c2b87bf30 in 
doris::pipeline::PipelineFragmentContext::~PipelineFragmentContext() 
/root/doris/be/src/pipeline/pipeline_fragment_context.cpp:148:1
   00:03:16       #29 0x557c2b9aecd7 in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:168:6
   00:03:16       #30 0x557c2b9aecd7 in 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:702:11
   00:03:16       #31 0x557c2b9aecd7 in 
std::__shared_ptr<doris::pipeline::PipelineFragmentContext, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1149:31
   00:03:16       #32 0x557c2b9aecd7 in 
doris::pipeline::TaskScheduler::_try_close_task(doris::pipeline::PipelineTask*, 
doris::pipeline::PipelineTaskState) 
/root/doris/be/src/pipeline/task_scheduler.cpp:359:1
   00:03:16       #33 0x557c2b9ac721 in 
doris::pipeline::TaskScheduler::_do_work(unsigned long) 
/root/doris/be/src/pipeline/task_scheduler.cpp:242:13
   00:03:16       #34 0x557c0c61772a in doris::ThreadPool::dispatch_thread() 
/root/doris/be/src/util/threadpool.cpp:533:24
   00:03:16       #35 0x557c0c5f825d in std::function<void ()>::operator()() 
const 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560:9
   00:03:16       #36 0x557c0c5f825d in doris::Thread::supervise_thread(void*) 
/root/doris/be/src/util/thread.cpp:498:5
   00:03:16       #37 0x7f32137f2608 in start_thread 
/build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8
   00:03:16       #38 0x7f3213a9f132 in __clone 
/build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
   00:03:16   
   00:03:16   0x61b0029a31d8 is located 1112 bytes inside of 1472-byte region 
[0x61b0029a2d80,0x61b0029a3340)
   00:03:16   freed by thread T284 (WithoutGroupTas) here:
   00:03:16       #0 0x557c09fdb80d in operator delete(void*) 
(/mnt/ssd01/pipline/OpenSourceDoris/clusterEnv/P0/Cluster0/be/lib/doris_be+0xe8c780d)
 (BuildId: 3c7aebf9dab039d1)
   00:03:16       #1 0x557c0c153a61 in doris::ObjectPool::clear() 
/root/doris/be/src/common/object_pool.h:57:13
   00:03:16       #2 0x557c0c153a61 in doris::RuntimeState::~RuntimeState() 
/root/doris/be/src/runtime/runtime_state.cpp:191:16
   00:03:16       #3 0x557c2b87b41d in 
std::default_delete<doris::RuntimeState>::operator()(doris::RuntimeState*) 
const 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:85:2
   00:03:16       #4 0x557c2b87b41d in 
std::__uniq_ptr_impl<doris::RuntimeState, 
std::default_delete<doris::RuntimeState> >::reset(doris::RuntimeState*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:182:4
   00:03:16       #5 0x557c2b87b41d in std::unique_ptr<doris::RuntimeState, 
std::default_delete<doris::RuntimeState> >::reset(doris::RuntimeState*) 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:456:7
   00:03:16       #6 0x557c2b87b41d in 
doris::pipeline::PipelineFragmentContext::~PipelineFragmentContext() 
/root/doris/be/src/pipeline/pipeline_fragment_context.cpp:143:24
   00:03:16       #7 0x557c2b9aecd7 in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:168:6
   00:03:16       #8 0x557c2b9aecd7 in 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:702:11
   00:03:16       #9 0x557c2b9aecd7 in 
std::__shared_ptr<doris::pipeline::PipelineFragmentContext, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1149:31
   00:03:16       #10 0x557c2b9aecd7 in 
doris::pipeline::TaskScheduler::_try_close_task(doris::pipeline::PipelineTask*, 
doris::pipeline::PipelineTaskState) 
/root/doris/be/src/pipeline/task_scheduler.cpp:359:1
   00:03:16       #11 0x557c2b9ac721 in 
doris::pipeline::TaskScheduler::_do_work(unsigned long) 
/root/doris/be/src/pipeline/task_scheduler.cpp:242:13
   00:03:16       #12 0x557c0c61772a in doris::ThreadPool::dispatch_thread() 
/root/doris/be/src/util/threadpool.cpp:533:24
   00:03:16       #13 0x557c0c5f825d in std::function<void ()>::operator()() 
const 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560:9
   00:03:16       #14 0x557c0c5f825d in doris::Thread::supervise_thread(void*) 
/root/doris/be/src/util/thread.cpp:498:5
   00:03:16       #15 0x7f32137f2608 in start_thread 
/build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8
   
   ## Further comments
   
   If this is a relatively large or complex change, kick off the discussion at 
[d...@doris.apache.org](mailto:d...@doris.apache.org) 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: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to