From 552aea4a7de93b97e3ec7415ea251cb5eea6f305 Mon Sep 17 00:00:00 2001 From: selsta Date: Wed, 22 Jul 2026 21:56:40 +0200 Subject: [PATCH] wallet2: fix task lifetime during parsed block processing (cherry picked from commit a09eb5cf4aefa6c351acf898ad4e3be4a67ad860) --- src/wallet/wallet2.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 7c4a6d4c6..4b253c0df 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -3274,7 +3274,6 @@ void wallet2::process_parsed_blocks(uint64_t start_height, const std::vector tx_cache_data; @@ -3282,6 +3281,7 @@ void wallet2::process_parsed_blocks(uint64_t start_height, const std::vector geniods; geniods.reserve(num_txes); + tools::threadpool::waiter output_waiter(tpool); txidx = 0; uint8_t hf_version_view_tags = get_view_tag_fork(); for (size_t i = 0; i < blocks.size(); ++i) @@ -3381,7 +3383,7 @@ void wallet2::process_parsed_blocks(uint64_t start_height, const std::vector= hf_version_view_tags) geniods.push_back(geniod_params{ tx, n_vouts, txidx }); else - tpool.submit(&waiter, [&, n_vouts, txidx](){ geniod(tx, n_vouts, txidx); }, true); + tpool.submit(&output_waiter, [&, n_vouts, txidx](){ geniod(tx, n_vouts, txidx); }, true); } } ++txidx; @@ -3391,7 +3393,7 @@ void wallet2::process_parsed_blocks(uint64_t start_height, const std::vector= hf_version_view_tags) geniods.push_back(geniod_params{ parsed_blocks[i].txes[j], parsed_blocks[i].txes[j].vout.size(), txidx }); else - tpool.submit(&waiter, [&, i, j, txidx](){ geniod(parsed_blocks[i].txes[j], parsed_blocks[i].txes[j].vout.size(), txidx); }, true); + tpool.submit(&output_waiter, [&, i, j, txidx](){ geniod(parsed_blocks[i].txes[j], parsed_blocks[i].txes[j].vout.size(), txidx); }, true); ++txidx; } } @@ -3410,7 +3412,7 @@ void wallet2::process_parsed_blocks(uint64_t start_height, const std::vector