You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2022/12/01 04:49:53 UTC

[GitHub] [doris] mrhhsg opened a new pull request, #14719: [fix](function) StringRef should not be key of timezone cache

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

   # Proposed changes
   
   In PR(#14616 ), the cache map's key was type of `StringRef`, but `StringRef` is a pointer indeed. So the key was not persistent.
   
   ## Problem Summary
   
   ```bash
   ERROR: AddressSanitizer: heap-use-after-free on address 0x606004e1deb0 at pc 0x0000040a33d6 bp 0x7f4706326d40 sp 0x7f47063264e8
   READ of size 13 at 0x606004e1deb0 thread T3048 (FragmentMgrThre)
       #0 0x40a33d5 in MemcmpInterceptorCommon(void*, int (*)(void const*, void const*, unsigned long), void const*, void const*, unsigned long) (/mnt/hdd01/branch-1.1-lts/VEC_ASAN/be/lib/doris_be+0x40a33d5)
       #1 0x40a38c9 in memcmp (/mnt/hdd01/branch-1.1-lts/VEC_ASAN/be/lib/doris_be+0x40a38c9)
       #2 0xb5b8c1d in operator<(StringRef, StringRef) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/common/string_ref.h:177:15
       #3 0xb5b865e in std::less<StringRef>::operator()(StringRef const&, StringRef const&) const /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_function.h:386:20
       #4 0xb5b81c5 in std::_Rb_tree<StringRef, std::pair<StringRef const, cctz::time_zone>, std::_Select1st<std::pair<StringRef const, cctz::time_zone> >, std::less<StringRef>, std::allocator<std::pair<StringRef const, cctz::time_zone> > >::_M_lower_bound(std::_Rb_tree_node<std::pair<StringRef const, cctz::time_zone> >*, std::_Rb_tree_node_base*, StringRef const&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_tree.h:1903:7
       #5 0xb5b7eee in std::_Rb_tree<StringRef, std::pair<StringRef const, cctz::time_zone>, std::_Select1st<std::pair<StringRef const, cctz::time_zone> >, std::less<StringRef>, std::allocator<std::pair<StringRef const, cctz::time_zone> > >::find(StringRef const&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_tree.h:2521:22
       #6 0xb5b7660 in std::map<StringRef, cctz::time_zone, std::less<StringRef>, std::allocator<std::pair<StringRef const, cctz::time_zone> > >::find(StringRef const&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_map.h:1170:21
       #7 0xb5b6930 in doris::vectorized::FunctionConvertTZ::execute_straight(doris_udf::FunctionContext*, doris::vectorized::ColumnVector<long> const*, doris::vectorized::ColumnString const*, doris::vectorized::ColumnString const*, doris::vectorized::ColumnVector<long>*, doris::vectorized::PODArray<unsigned char, 4096ul, Allocator<false, false>, 15ul, 16ul>&, unsigned long) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/functions/function_convert_tz.h:116:33
       #8 0xb5b5bf5 in doris::vectorized::FunctionConvertTZ::execute_impl(doris_udf::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/functions/function_convert_tz.h:86:9
       #9 0x83f8479 in doris::vectorized::DefaultExecutable::execute_impl(doris_udf::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/functions/function.h:438:26
       #10 0x9973f1d in doris::vectorized::PreparedFunctionImpl::execute_without_low_cardinality_columns(doris_udf::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long, bool) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/functions/function.cpp:251:16
       #11 0x99750a2 in doris::vectorized::PreparedFunctionImpl::execute(doris_udf::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long, bool) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/functions/function.cpp:272:12
       #12 0x83f5550 in doris::vectorized::IFunctionBase::execute(doris_udf::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long, bool) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/functions/function.h:137:19
       #13 0xb767c53 in doris::vectorized::VectorizedFnCall::execute(doris::vectorized::VExprContext*, doris::vectorized::Block*, int*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exprs/vectorized_fn_call.cpp:90:5
       #14 0xb767827 in doris::vectorized::VectorizedFnCall::execute(doris::vectorized::VExprContext*, doris::vectorized::Block*, int*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exprs/vectorized_fn_call.cpp:83:9
       #15 0x6c19483 in doris::vectorized::VExprContext::execute(doris::vectorized::Block*, int*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exprs/vexpr_context.cpp:41:24
       #16 0x768f771 in doris::vectorized::VUnionNode::materialize_block(doris::vectorized::Block*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exec/vunion_node.cpp:278:25
       #17 0x768ebd4 in doris::vectorized::VUnionNode::get_next_materialized(doris::RuntimeState*, doris::vectorized::Block*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exec/vunion_node.cpp:152:26
       #18 0x7692039 in doris::vectorized::VUnionNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exec/vunion_node.cpp:237:9
       #19 0x7671120 in doris::vectorized::VSortNode::sort_input(doris::RuntimeState*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exec/vsort_node.cpp:135:9
       #20 0x7670b0d in doris::vectorized::VSortNode::open(doris::RuntimeState*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/vec/exec/vsort_node.cpp:71:5
       #21 0x57454d1 in doris::PlanFragmentExecutor::open_vectorized_internal() /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/runtime/plan_fragment_executor.cpp:286:9
       #22 0x5742e2e in doris::PlanFragmentExecutor::open() /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/runtime/plan_fragment_executor.cpp:259:18
       #23 0x54f4cc7 in doris::FragmentExecState::execute() /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/runtime/fragment_mgr.cpp:249:9
       #24 0x54f8ee4 in doris::FragmentMgr::_exec_actual(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/runtime/fragment_mgr.cpp:485:17
       #25 0x5552dc7 in void std::__invoke_impl<void, void (doris::FragmentMgr::*&)(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>), doris::FragmentMgr*&, std::shared_ptr<doris::FragmentExecState>&, std::function<void (doris::PlanFragmentExecutor*)>&>(std::__invoke_memfun_deref, void (doris::FragmentMgr::*&)(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>), doris::FragmentMgr*&, std::shared_ptr<doris::FragmentExecState>&, std::function<void (doris::PlanFragmentExecutor*)>&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74:14
       #26 0x5552abb in std::enable_if<is_invocable_r_v<void, void (doris::FragmentMgr::*&)(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>), doris::FragmentMgr*&, std::shared_ptr<doris::FragmentExecState>&, std::function<void (doris::PlanFragmentExecutor*)>&>, void>::type std::__invoke_r<void, void (doris::FragmentMgr::*&)(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>), doris::FragmentMgr*&, std::shared_ptr<doris::FragmentExecState>&, std::function<void (doris::PlanFragmentExecutor*)>&>(void (doris::FragmentMgr::*&)(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>), doris::FragmentMgr*&, std::shared_ptr<doris::FragmentExecState>&, std::function<void (doris::PlanFragmentExecutor*)>&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111:2
       #27 0x55529e0 in void std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>::__call<void, 0ul, 1ul, 2ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul, 2ul>) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570:11
       #28 0x5552803 in void std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>::operator()<>() /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629:17
       #29 0x55526fc in void std::__invoke_impl<void, std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>&>(std::__invoke_other, std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61:14
       #30 0x555268c in std::enable_if<is_invocable_r_v<void, std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>&>, void>::type std::__invoke_r<void, std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>&>(std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)>&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invok
 e.h:111:2
       #31 0x5551e5c in std::_Function_handler<void (), std::_Bind_result<void, void (doris::FragmentMgr::* (doris::FragmentMgr*, std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>))(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::PlanFragmentExecutor*)>)> >::_M_invoke(std::_Any_data const&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291:9
       #32 0x5448d82 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
       #33 0x5b67788 in doris::FunctionRunnable::run() /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/util/threadpool.cpp:42:27
       #34 0x5b57969 in doris::ThreadPool::dispatch_thread() /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/util/threadpool.cpp:570:24
       #35 0x5b7a0ec in void std::__invoke_impl<void, void (doris::ThreadPool::*&)(), doris::ThreadPool*&>(std::__invoke_memfun_deref, void (doris::ThreadPool::*&)(), doris::ThreadPool*&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74:14
       #36 0x5b79fb1 in std::__invoke_result<void (doris::ThreadPool::*&)(), doris::ThreadPool*&>::type std::__invoke<void (doris::ThreadPool::*&)(), doris::ThreadPool*&>(void (doris::ThreadPool::*&)(), doris::ThreadPool*&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96:14
       #37 0x5b79f2a in void std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>::__call<void, 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:420:11
       #38 0x5b79dd3 in void std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>::operator()<void>() /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:503:17
       #39 0x5b79ccc in void std::__invoke_impl<void, std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>&>(std::__invoke_other, std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61:14
       #40 0x5b79c5c in std::enable_if<is_invocable_r_v<void, std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>&>, void>::type std::__invoke_r<void, std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>&>(std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()>&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111:2
       #41 0x5b798dc in std::_Function_handler<void (), std::_Bind<void (doris::ThreadPool::* (doris::ThreadPool*))()> >::_M_invoke(std::_Any_data const&) /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291:9
       #42 0x5448d82 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
       #43 0x5b38712 in doris::Thread::supervise_thread(void*) /mnt/hdd01/repo_center/doris_branch-1.1-lts/doris/be/src/util/thread.cpp:406:5
       #44 0x7f485383444f in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x944f)
       #45 0x7f4853ab9d52 in clone (/lib/x86_64-linux-gnu/libc.so.6+0x117d52)
   ```
   
   ## Checklist(Required)
   
   1. Does it affect the original behavior: 
       - [ ] Yes
       - [ ] No
       - [ ] I don't know
   2. Has unit tests been added:
       - [ ] Yes
       - [ ] No
       - [ ] No Need
   3. Has document been added or modified:
       - [ ] Yes
       - [ ] No
       - [ ] No Need
   4. Does it need to update dependencies:
       - [ ] Yes
       - [ ] No
   5. Are there any changes that cannot be rolled back:
       - [ ] Yes (If Yes, please explain WHY)
       - [ ] No
   
   ## Further comments
   
   If this is a relatively large or complex change, kick off the discussion at [dev@doris.apache.org](mailto:dev@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-unsubscribe@doris.apache.org

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


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


[GitHub] [doris] hello-stephen commented on pull request #14719: [fix](function) StringRef should not be key of timezone cache

Posted by GitBox <gi...@apache.org>.
hello-stephen commented on PR #14719:
URL: https://github.com/apache/doris/pull/14719#issuecomment-1333347162

   TeamCity pipeline, clickbench performance test result:
    the sum of best hot time: 34.93 seconds
    load time: 428 seconds
    storage size: 17123343153 Bytes
    https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20221201075522_clickbench_pr_56044.html


-- 
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-unsubscribe@doris.apache.org

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


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


[GitHub] [doris] yiguolei merged pull request #14719: [fix](function) StringRef should not be key of timezone cache

Posted by GitBox <gi...@apache.org>.
yiguolei merged PR #14719:
URL: https://github.com/apache/doris/pull/14719


-- 
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-unsubscribe@doris.apache.org

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


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


[GitHub] [doris] github-actions[bot] commented on pull request #14719: [fix](function) StringRef should not be key of timezone cache

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on PR #14719:
URL: https://github.com/apache/doris/pull/14719#issuecomment-1333377886

   PR approved by anyone and no changes requested.


-- 
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-unsubscribe@doris.apache.org

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


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