apache / doris

Apache Doris is an easy-to-use, high performance and unified analytics database.
https://doris.apache.org
Apache License 2.0
12.65k stars 3.26k forks source link

[Bug] BE report undefined behavior under ubsan about opentelemetry #18907

Closed zhangstar333 closed 1 year ago

zhangstar333 commented 1 year ago

Search before asking

Version

master

What's Wrong?

mnt/disk2/zhangwenxin/code/doris/thirdparty/installed/include/opentelemetry/nostd/shared_ptr.h:96:72: runtime error: member call on address 0x559f74af6de0 which does not point to an object of type 'shared_ptr_wrapper'
0x559f74af6de0: note: object is of type 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::trace::NoopTracer>::shared_ptr_wrapper'
 00 00 00 00  98 f0 3a 57 9f 55 00 00  00 5b fc 18 7d 7f 00 00  20 5b fc 18 7d 7f 00 00  00 00 00 00
              ^~~~~~~~~~~~~~~~~~~~~~~
              vptr for 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::trace::NoopTracer>::shared_ptr_wrapper'
    #0 0x559f2fc8450e in opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::trace::Tracer>::shared_ptr(opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::trace::Tracer> const&) /mnt/disk2/zhangwenxin/code/doris/thirdparty/installed/include/opentelemetry/nostd/shared_ptr.h:96
    #1 0x559f2fe3bcf7 in doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&) /mnt/disk2/zhangwenxin/code/doris/be/src/runtime/fragment_mgr.cpp:680
    #2 0x559f2fe3a6a4 in doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&) /mnt/disk2/zhangwenxin/code/doris/be/src/runtime/fragment_mgr.cpp:555
    #3 0x559f30585cb4 in doris::PInternalServiceImpl::_exec_plan_fragment(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, doris::PFragmentRequestVersion, bool) /mnt/disk2/zhangwenxin/code/doris/be/src/service/internal_service.cpp:371
    #4 0x559f3057f813 in doris::PInternalServiceImpl::exec_plan_fragment(google::protobuf::RpcController*, doris::PExecPlanFragmentRequest const*, doris::PExecPlanFragmentResult*, google::protobuf::Closure*) /mnt/disk2/zhangwenxin/code/doris/be/src/service/internal_service.cpp:214
    #5 0x559f3057fe83 in operator() /mnt/disk2/zhangwenxin/code/doris/be/src/service/internal_service.cpp:226
    #6 0x559f305cd676 in __invoke_impl<void, doris::PInternalServiceImpl::exec_plan_fragment_prepare(google::protobuf::RpcController*, const doris::PExecPlanFragmentRequest*, doris::PExecPlanFragmentResult*, google::protobuf::Closure*)::<lambda()>&> /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:61
    #7 0x559f305c42a3 in __invoke_r<void, doris::PInternalServiceImpl::exec_plan_fragment_prepare(google::protobuf::RpcController*, const doris::PExecPlanFragmentRequest*, doris::PExecPlanFragmentResult*, google::protobuf::Closure*)::<lambda()>&> /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:111
    #8 0x559f305bdeff in _M_invoke /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/std_function.h:291
    #9 0x559f2be34cb0 in std::function<void ()>::operator()() const /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/std_function.h:560
    #10 0x559f2be2f78a in doris::PriorityThreadPool::work_thread(int) /mnt/disk2/zhangwenxin/code/doris/be/src/util/priority_thread_pool.hpp:146
    #11 0x559f2be423f4 in void std::__invoke_impl<void, void (doris::PriorityThreadPool::* const&)(int), doris::PriorityThreadPool*&, int&>(std::__invoke_memfun_deref, void (doris::PriorityThreadPool::* const&)(int), doris::PriorityThreadPool*&, int&) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:74
    #12 0x559f2be41f91 in std::__invoke_result<void (doris::PriorityThreadPool::* const&)(int), doris::PriorityThreadPool*&, int&>::type std::__invoke<void (doris::PriorityThreadPool::* const&)(int), doris::PriorityThreadPool*&, int&>(void (doris::PriorityThreadPool::* const&)(int), doris::PriorityThreadPool*&, int&) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:96
    #13 0x559f2be41e59 in decltype (__invoke((*this)._M_pmf, (forward<doris::PriorityThreadPool*&>)({parm#1}), (forward<int&>)({parm#1}))) std::_Mem_fn_base<void (doris::PriorityThreadPool::*)(int), true>::operator()<doris::PriorityThreadPool*&, int&>(doris::PriorityThreadPool*&, int&) const /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/functional:131
    #14 0x559f2be41c3f in void std::__invoke_impl<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)>&, doris::PriorityThreadPool*&, int&>(std::__invoke_other, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)>&, doris::PriorityThreadPool*&, int&) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:61
    #15 0x559f2be41a7c in std::enable_if<is_invocable_r_v<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)>&, doris::PriorityThreadPool*&, int&>, void>::type std::__invoke_r<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)>&, doris::PriorityThreadPool*&, int&>(std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)>&, doris::PriorityThreadPool*&, int&) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:111
    #16 0x559f2be4176a in void std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/functional:570
    #17 0x559f2be414a8 in void std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>::operator()<>() /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/functional:629
    #18 0x559f2be4142b in void std::__invoke_impl<void, std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>>(std::__invoke_other, std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>&&) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:61
    #19 0x559f2be412ac in std::__invoke_result<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>>::type std::__invoke<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>>(std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)>&&) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/invoke.h:96
    #20 0x559f2be41181 in void std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/std_thread.h:253
    #21 0x559f2be410b7 in std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)> > >::operator()() /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/std_thread.h:260
    #22 0x559f2be4106f in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityThreadPool::*)(int)> (doris::PriorityThreadPool*, int)> > > >::_M_run() /mnt/disk2/zhangwenxin/tools/ldb_toolchain/installed/include/c++/11/bits/std_thread.h:211
    #23 0x559f572f685f in execute_native_thread_routine (/mnt/disk2/zhangwenxin/code/doris/output/be/lib/doris_be+0x6498685f)
    #24 0x7f7d9d892179 in start_thread (/lib64/libpthread.so.0+0x8179)
    #25 0x7f7d9d23fdf2 in __GI___clone (/lib64/libc.so.6+0xfcdf2)

What You Expected?

not report such error

How to Reproduce?

No response

Anything Else?

No response

Are you willing to submit PR?

Code of Conduct

zhangstar333 commented 1 year ago

@luozenglin here