Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/node/utxo_snapshot.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ class SnapshotMetadata
SnapshotMetadata() { }
SnapshotMetadata(
const uint256& base_blockhash,
uint64_t coins_count,
unsigned int nchaintx) :
uint64_t coins_count) :
m_base_blockhash(base_blockhash),
m_coins_count(coins_count) { }

Expand Down
5 changes: 4 additions & 1 deletion src/qt/bitcoingui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -942,7 +942,8 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel, interfaces::BlockAndH
}
}
} else {
if(trayIconMenu)
// Shutdown requested, disable menus
if (trayIconMenu)
{
// Disable context menu on tray icon
trayIconMenu->clear();
Expand All @@ -964,6 +965,8 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel, interfaces::BlockAndH
dockIconMenu->clear();
}
#endif
// Disable top bar menu actions
appMenuBar->clear();
}

updateCoinJoinVisibility();
Expand Down
6 changes: 2 additions & 4 deletions src/rpc/blockchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3232,7 +3232,7 @@ UniValue CreateUTXOSnapshot(
tip->nHeight, tip->GetBlockHash().ToString(),
fs::PathToString(path), fs::PathToString(temppath)));

SnapshotMetadata metadata{tip->GetBlockHash(), maybe_stats->coins_count, tip->nChainTx};
SnapshotMetadata metadata{tip->GetBlockHash(), maybe_stats->coins_count};

@thepastaclaw thepastaclaw Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

✅ Resolved at 89531800; see the replies below.

🔴 Blocking: Account for the omitted bitcoin#28639 functional-test changes

Commit 2186c79 presents bitcoin#28639 as a complete merge and lists fafde92, but only the production refactor is included. Comparing upstream merge 448790c against its first parent confirms that it also fixes the assert_debug_log argument in feature_assumeutxo.py and adds malformed-snapshot cases with declared coin counts one below and one above the actual count, asserting both diagnostics and loadtxoutset failure. Dash's base and head lack that test and the loadtxoutset RPC; upstream introduced them in 42cae39 and ce585a9, respectively, and Dash-reachable git log -S searches show neither implementation was present. Existing validation_chainstatemanager_tests.cpp:287-296 covers rejection of both incorrect counts directly, so this is not evidence of a production regression, but it does not include the omitted RPC/log assertions. Bring in the appropriately adapted prerequisite and test changes, or explicitly mark this backport as partial and document the omitted transformations with a linked follow-up issue or PR for the Dash loadtxoutset work. The current PR description and merge message do not declare that exclusion.

source: glm-5.3-flash (phase1-reviewer: general); gpt-6.1-sol (phase2-reviewer: general, backport-reviewer, dash-core-commit-history)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

change to this PR's diff since commit 0eef81a (an empty commit, a merge of the base or a rebase onto it): that review stands — changes requested; @thepastaclaw review asks for a review of this commit (commit 8953180)

title changed to "partial...." for 28639

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Resolved (re-reviewed at 89531800): I verified your change in ed19c19: the commit subject now says 'partial Merge', and its BACKPORT NOTE explicitly identifies the excluded test and missing loadtxoutset RPC. That satisfies the specific backport-scope rule; my earlier requirement for an additional linked follow-up was unnecessary for this declared exclusion.


afile << metadata;

Expand All @@ -3259,9 +3259,7 @@ UniValue CreateUTXOSnapshot(
result.pushKV("base_height", tip->nHeight);
result.pushKV("path", path.utf8string());
result.pushKV("txoutset_hash", maybe_stats->hashSerialized.ToString());
// Cast required because univalue doesn't have serialization specified for
// `unsigned int`, nChainTx's type.
result.pushKV("nchaintx", uint64_t{tip->nChainTx});
result.pushKV("nchaintx", tip->nChainTx);
return result;
}

Expand Down
2 changes: 1 addition & 1 deletion test/functional/interface_usdt_coinselection.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def run_test(self):
ctx.enable_probe(probe="coin_selection:normal_create_tx_internal", fn_name="trace_normal_create_tx")
ctx.enable_probe(probe="coin_selection:attempting_aps_create_tx", fn_name="trace_attempt_aps")
ctx.enable_probe(probe="coin_selection:aps_create_tx_internal", fn_name="trace_aps_create_tx")
self.bpf = BPF(text=coinselection_tracepoints_program, usdt_contexts=[ctx], debug=0)
self.bpf = BPF(text=coinselection_tracepoints_program, usdt_contexts=[ctx], debug=0, cflags=["-Wno-error=implicit-function-declaration"])

self.log.info("Prepare wallets")
self.generate(self.nodes[0], 101)
Expand Down
6 changes: 3 additions & 3 deletions test/functional/interface_usdt_mempool.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def added_test(self):
node = self.nodes[0]
ctx = USDT(pid=node.process.pid)
ctx.enable_probe(probe="mempool:added", fn_name="trace_added")
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0, cflags=["-Wno-error=implicit-function-declaration"])

def handle_added_event(_, data, __):
events.append(bpf["added_events"].event(data))
Expand Down Expand Up @@ -153,7 +153,7 @@ def removed_test(self):
node = self.nodes[0]
ctx = USDT(pid=node.process.pid)
ctx.enable_probe(probe="mempool:removed", fn_name="trace_removed")
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0, cflags=["-Wno-error=implicit-function-declaration"])

def handle_removed_event(_, data, __):
events.append(bpf["removed_events"].event(data))
Expand Down Expand Up @@ -201,7 +201,7 @@ def rejected_test(self):
self.log.info("Hooking into mempool:rejected tracepoint...")
ctx = USDT(pid=node.process.pid)
ctx.enable_probe(probe="mempool:rejected", fn_name="trace_rejected")
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0, cflags=["-Wno-error=implicit-function-declaration"])

def handle_rejected_event(_, data, __):
events.append(bpf["rejected_events"].event(data))
Expand Down
Loading