Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[fix](memory) Fix memory tracker destructor deadlock #33497

Merged
merged 2 commits into from
Apr 10, 2024

Conversation

xinyiZzz
Copy link
Contributor

Proposed changes

fix deadlock:

Thread 1644 (Thread 0x7f91d2d59700 (LWP 2982688) "memory_gc_threa"):
#0  __lll_lock_wait (futex=futex@entry=0x7f95305e75d8, private=0) at lowlevellock.c:52
#1  0x00007f9557ec40a3 in __GI___pthread_mutex_lock (mutex=0x7f95305e75d8) at ../nptl/pthread_mutex_lock.c:80
#2  0x0000565210c87cc7 in __gthread_mutex_lock (__mutex=0x7f95305e75d8) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:749
#3  std::mutex::lock (this=0x7f95305e75d8) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_mutex.h:100
#4  std::lock_guard<std::mutex>::lock_guard (__m=..., this=<optimized out>) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_mutex.h:229
#5  doris::MemTrackerLimiter::~MemTrackerLimiter (this=0x7f8a19813510) at /home/zcp/repo_center/doris_master/doris/be/src/runtime/memory/mem_tracker_limiter.cpp:133
#6  0x0000565210c89ebb in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=<optimized out>) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:168
#7  std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=<optimized out>) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:702
#8  std::__shared_ptr<doris::MemTrackerLimiter, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=<optimized out>) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1149
#9  doris::MemTrackerLimiter::make_top_consumption_snapshots (snapshots=snapshots@entry=0x7f91d2d528a0, top_num=top_num@entry=15) at /home/zcp/repo_center/doris_master/doris/be/src/runtime/memory/mem_tracker_limiter.cpp:264
#10 0x0000565210c8c4f0 in doris::MemTrackerLimiter::log_process_usage_str[abi:cxx11]() () at /home/zcp/repo_center/doris_master/doris/be/src/runtime/memory/mem_tracker_limiter.cpp:329
#11 0x0000565210c8ce83 in doris::MemTrackerLimiter::print_log_process_usage () at /home/zcp/repo_center/doris_master/doris/be/src/runtime/memory/mem_tracker_limiter.cpp:352
#12 0x0000565210019c16 in doris::Daemon::memory_gc_thread (this=0x7ffd179e65d0) at /home/zcp/repo_center/doris_master/doris/be/src/common/daemon.cpp:273
#13 0x0000565210eae841 in std::function<void ()>::operator()() const (this=0x7f95305e75d8) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
#14 doris::Thread::supervise_thread (arg=0x7f952af79ae0) at /home/zcp/repo_center/doris_master/doris/be/src/util/thread.cpp:498
#15 0x00007f9557ec1609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#16 0x00007f955816e133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Further comments

If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...

@doris-robot
Copy link

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR

Since 2024-03-18, the Document has been moved to doris-website.
See Doris Document.

@xinyiZzz
Copy link
Contributor Author

run buildall

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@xinyiZzz
Copy link
Contributor Author

run buildall

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@doris-robot
Copy link

TeamCity be ut coverage result:
Function Coverage: 35.62% (8892/24960)
Line Coverage: 27.35% (73060/267139)
Region Coverage: 26.52% (37758/142392)
Branch Coverage: 23.32% (19246/82524)
Coverage Report: http://coverage.selectdb-in.cc/coverage/14d4cc271199bde4d31e8fada785472b1e651fe5_14d4cc271199bde4d31e8fada785472b1e651fe5/report/index.html

Copy link
Contributor

PR approved by at least one committer and no changes requested.

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Apr 10, 2024
Copy link
Contributor

PR approved by anyone and no changes requested.

Copy link
Contributor

@zhiqiang-hhhh zhiqiang-hhhh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@yiguolei yiguolei merged commit fabd046 into apache:master Apr 10, 2024
25 of 31 checks passed
xinyiZzz added a commit to xinyiZzz/incubator-doris that referenced this pull request Apr 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by one committer. reviewed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants