This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 1e738f46a30 [Fix](warmup) Fix coredump in
`CloudTablet::complete_rowset_segment_warmup` due to capture by reference
(#56395)
1e738f46a30 is described below
commit 1e738f46a3026fad7cb686405943ff1033737aee
Author: bobhan1 <[email protected]>
AuthorDate: Thu Sep 25 15:58:48 2025 +0800
[Fix](warmup) Fix coredump in `CloudTablet::complete_rowset_segment_warmup`
due to capture by reference (#56395)
### What problem does this PR solve?
introduced in https://github.com/apache/doris/pull/54611
```
(gdb) bt
#0 __GI___pthread_sigmask (how=2, newmask=<optimized out>, oldmask=0x0) at
./nptl/pthread_sigmask.c:43
#1 0x00007f7aa6b5d71e in PosixSignals::chained_handler(int, siginfo*,
void*) [clone .part.0] () from
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
#2 0x00007f7aa6b5e206 in JVM_handle_linux_signal () from
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
#3 <signal handler called>
#4 0x000055e20050d443 in std::_Hashtable<doris::RowsetId,
std::pair<doris::RowsetId const, doris::CloudTablet::RowsetWarmUpInfo>,
std::allocator<std::pair<doris::RowsetId const,
doris::CloudTablet::RowsetWarmUpInfo> >, std::__detail::_Select1st,
std::equal_to<doris::RowsetId>, std::hash<doris::RowsetId>,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true,
false, true> >::_M_find_before_nod [...]
__bkt=4186920012728959759, __k=..., __code=11200260987994981938) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/hashtable.h:2205
#5 std::_Hashtable<doris::RowsetId, std::pair<doris::RowsetId const,
doris::CloudTablet::RowsetWarmUpInfo>, std::allocator<std::pair<doris::RowsetId
const, doris::CloudTablet::RowsetWarmUpInfo> >, std::__detail::_Select1st,
std::equal_to<doris::RowsetId>, std::hash<doris::RowsetId>,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true,
false, true> >::_M_locate (this=this@entry=0x7f79e69acde [...]
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/hashtable.h:2283
#6 0x000055e200505a8d in std::_Hashtable<doris::RowsetId,
std::pair<doris::RowsetId const, doris::CloudTablet::RowsetWarmUpInfo>,
std::allocator<std::pair<doris::RowsetId const,
doris::CloudTablet::RowsetWarmUpInfo> >, std::__detail::_Select1st,
std::equal_to<doris::RowsetId>, std::hash<doris::RowsetId>,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true,
false, true> >::find (this=0x7f79e [...]
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/hashtable.h:1929
#7 std::unordered_map<doris::RowsetId,
doris::CloudTablet::RowsetWarmUpInfo, std::hash<doris::RowsetId>,
std::equal_to<doris::RowsetId>, std::allocator<std::pair<doris::RowsetId const,
doris::CloudTablet::RowsetWarmUpInfo> > >::contains (this=0x7f79e69acde0,
__x=...)
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/unordered_map.h:999
#8 doris::CloudTablet::complete_rowset_segment_warmup (this=<optimized
out>, rowset_id=..., status=..., segment_num=1, inverted_idx_num=0) at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_tablet.cpp:1692
#9 0x000055e2005338ba in
doris::CloudWarmUpManager::handle_jobs()::$_0::operator()(doris::Status) const
(this=0x7f79e8bebad0, st=...) at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_warm_up_manager.cpp:243
#10 std::__invoke_impl<void,
doris::CloudWarmUpManager::handle_jobs()::$_0&,
doris::Status>(std::__invoke_other,
doris::CloudWarmUpManager::handle_jobs()::$_0&, doris::Status&&) (__f=...,
__args=...)
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:63
#11 std::__invoke_r<void, doris::CloudWarmUpManager::handle_jobs()::$_0&,
doris::Status>(doris::CloudWarmUpManager::handle_jobs()::$_0&, doris::Status&&)
(__fn=..., __args=...)
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:113
#12 std::_Function_handler<void (doris::Status),
doris::CloudWarmUpManager::handle_jobs()::$_0>::_M_invoke(std::_Any_data
const&, doris::Status&&) (__functor=..., __args=...)
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:292
#13 0x000055e200533310 in std::function<void
(doris::Status)>::operator()(doris::Status) const (this=0x7f795a3ff1d0,
__args=...) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:593
#14
doris::CloudWarmUpManager::submit_download_tasks(std::filesystem::__cxx11::path,
long, std::shared_ptr<doris::io::FileSystem>, long,
std::shared_ptr<bthread::CountdownEvent>, bool, std::function<void
(doris::Status)>)::$_0::operator()(doris::Status) const (
this=0x7f79f0710b60, st=...) at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_warm_up_manager.cpp:149
#15 std::__invoke_impl<void,
doris::CloudWarmUpManager::submit_download_tasks(std::filesystem::__cxx11::path,
long, std::shared_ptr<doris::io::FileSystem>, long,
std::shared_ptr<bthread::CountdownEvent>, bool, std::function<void
(doris::Status)>)::$_0&, doris::Status>(std::__invoke_other,
doris::CloudWarmUpManager::submit_download_tasks(std::filesystem::__cxx11::path,
long, std::shared_ptr<doris::io::FileSystem>, long,
std::shared_ptr<bthread::CountdownEvent>, bool, std::function<void [...]
__f=..., __args=...) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:63
#16 std::__invoke_r<void,
doris::CloudWarmUpManager::submit_download_tasks(std::filesystem::__cxx11::path,
long, std::shared_ptr<doris::io::FileSystem>, long,
std::shared_ptr<bthread::CountdownEvent>, bool, std::function<void
(doris::Status)>)::$_0&,
doris::Status>(doris::CloudWarmUpManager::submit_download_tasks(std::filesystem::__cxx11::path,
long, std::shared_ptr<doris::io::FileSystem>, long,
std::shared_ptr<bthread::CountdownEvent>, bool, std::function<void
(doris::Status)>)::$_0& [...]
at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:113
#17 std::_Function_handler<void (doris::Status),
doris::CloudWarmUpManager::submit_download_tasks(std::filesystem::__cxx11::path,
long, std::shared_ptr<doris::io::FileSystem>, long,
std::shared_ptr<bthread::CountdownEvent>, bool, std::function<void
(doris::Status)>)::$_0>::_M_invoke(std::_Any_data const&, doris::Status&&)
(__functor=..., __args=...) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:292
#18 0x000055e200469cb1 in std::function<void
(doris::Status)>::operator()(doris::Status) const (this=0x7f796941cee0,
__args=...) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:593
#19 doris::io::FileCacheBlockDownloader::download_segment_file
(this=<optimized out>, meta=...) at
/home/zcp/repo_center/doris_master/doris/be/src/io/cache/block_file_cache_downloader.cpp:297
#20 0x000055e1fbfcbe85 in doris::ThreadPool::dispatch_thread
(this=0x7f7995a1da00) at
/home/zcp/repo_center/doris_master/doris/be/src/util/threadpool.cpp:614
#21 0x000055e1fbfc0fac in std::function<void ()>::operator()() const
(this=0x7f796941cee0) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:593
#22 doris::Thread::supervise_thread (arg=0x7f79f13de010) at
/home/zcp/repo_center/doris_master/doris/be/src/util/thread.cpp:460
#23 0x00007f7aa5bf8ac3 in start_thread (arg=<optimized out>) at
./nptl/pthread_create.c:442
#24 0x00007f7aa5c8a850 in __closefrom_fallback (from=1685031872,
dirfd_fallback=<optimized out>) at
../sysdeps/unix/sysv/linux/closefrom_fallback.c:45
#25 0x0000000000000000 in ?? ()
```
Problem Summary:
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [ ] Unit Test
- [ ] Manual test (add detailed scripts or steps below)
- [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [ ] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [ ] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR
should merge into -->
---
be/src/cloud/cloud_warm_up_manager.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/be/src/cloud/cloud_warm_up_manager.cpp
b/be/src/cloud/cloud_warm_up_manager.cpp
index 2ecd6b74fdd..cbd45613444 100644
--- a/be/src/cloud/cloud_warm_up_manager.cpp
+++ b/be/src/cloud/cloud_warm_up_manager.cpp
@@ -154,7 +154,7 @@ void CloudWarmUpManager::submit_download_tasks(io::Path
path, int64_t file_size,
.is_dryrun =
config::enable_reader_dryrun_when_download_file_cache,
.is_warmup = true},
.download_done =
- [&](Status st) {
+ [&, done_cb = std::move(done_cb)](Status st) {
if (done_cb) done_cb(st);
if (!st) {
LOG_WARNING("Warm up error ").error(st);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]