(+) #36520 ryanofsky interfaces: Avoid node crashes from invalid Chain IPC calls P1 · bug fix Ready 2 Strong 53 + 67 tests Prevent node crashes and scheduler termination when IPC clients pass invalid inputs or fail notifications Fix findAncestorByHash returning success when the descendant block is missing P1 because it prevents node crashes and scheduler thread exits caused by untrusted or failing IPC callers Resilience against invalid arguments and client disconnects is essential across the process boundary Fixes issues encountered while developing multiprocess support Ranking pass: Base of the Chain-over-IPC chain: standalone crash hardening that #29409 and #10102 build on, so it is worth a reviewer first. Substantive support with no open objections Verified by functional testing that reported bugs are resolved (enirox001) Support because it cleanly fixes issues found while testing IPC interfaces (xyzconstant) Suggestions open on covering another crash case and exception type choice (cyb3ralbert, xyzconstant) 53 lines added or modified outside tests 67 lines added or modified in tests 9 lines removed in total 3 files, 3 commits (+) #29409 ryanofsky ipc: Expose Chain interface to IPC clients P1 · unblocks #10102 Ready 0 (+2) Mild 2,359 + 33 tests Allow external clients and separate processes to read chain data and receive block events over IPC Unblock running Bitcoin Core wallet in an isolated process without freezing internal C++ APIs P1 because it unblocks out-of-process wallet separation and external process integration Multiple downstream consumers and indexes depend on IPC chain access instead of P2P or RPC Ready for review following rebase and the interface split Broad support for enabling multiprocess wallet separation and external chain indexers Unaddressed objection: node aborts if notification callback throws, author replied (xyzconstant) Verified by testing with Rust BDK wallet integration and Electrs bindings (darosior, Sjors) Concept approval for running external indexes and client dashboards (ariard, willcl-ark, rustaceanrob) Approval from an account with no project history and no stated reason (Big621) 2,359 lines added or modified outside tests 33 lines added or modified in tests 515 lines removed in total 79 files, 8 commits (+) #10102 ryanofsky Multiprocess bitcoin P1 · new feature Review #29409 first 0 (+1) -1 Strong 4,152 + 197 tests Run Bitcoin Core node, wallet, and GUI components in isolated processes Prevent memory corruption or crashes in the GUI or wallet from compromising or taking down the node P1 because process isolation prevents UI and wallet flaws from compromising consensus validation Unblocks follow-up multiprocess architecture work across the codebase Ranking pass: Kept P1 as the category-defining PR, but placed after the two prerequisites it is stacked on. Broad support for the architectural direction of process separation (jonasschnelli, gmaxwell, dcousens, laanwj) Concept approval citing ability to run the node continuously while opening the GUI on demand (Sjors) Concerns over Cap'n Proto dependency were accepted as internal IPC for this change (gmaxwell, dcousens) Open question on whether capnp should be added to depends in a future PR (Sjors) 4,152 lines added or modified outside tests 197 lines added or modified in tests 634 lines removed in total 146 files, 24 commits (+) #35932 ryanofsky ipc: make ipc::disconnectIncoming wait for in-progress calls to complete P1 · bug fix Needs rebase 0 Crickets 2,169 + 3 tests Prevent node crashes and assertion failures during shutdown when asynchronous IPC calls are still running Ensure incoming IPC worker calls finish executing before node components are freed P1 because it fixes shutdown assertion failures and use-after-free bugs in multiprocess mode Eliminates crashes where in-flight asynchronous calls dereference node state after teardown starts Reviewing now is worthwhile with nothing known that would invalidate a review No review verdicts recorded No comments or reviews yet from anyone other than the author Draft PR has had no discussion so far 2,169 lines added or modified outside tests 3 lines added or modified in tests 612 lines removed in total 65 files, 18 commits (+) #36572 xyzconstant ipc: hold event loop references when using it in `CapnpProtocol` P1 · bug fix Needs rebase 0 Strong 68 Prevent use-after-free crashes and unexpected termination in multiprocess mode Ensures background tasks keep the IPC event loop alive even if the parent connection closes P1 after comparing with the other PRs here (assessed alone as P2): Raised to P1: same class of IPC event-loop use-after-free/termination as #35932 and #36520 , which are P1. P2 because it prevents crashes and termination in multiprocess builds when parent connections close Improves stability for experimental multiprocess deployments without affecting monolithic builds No review verdicts recorded Verified by running ipc_tests with no errors detected (Hamza1610) Minor style nit noted regarding a redundant semicolon (Husteem) 68 lines added or modified outside tests 0 lines added or modified in tests 23 lines removed in total 1 files, 1 commits (+) #32387 ryanofsky ipc: add windows support P2 · platform fix CI failing 0 Positive 2,541 + 189 tests Allow Bitcoin Core multiprocess mode and IPC features to build and run on Windows Enable testing and deployment of separated process binaries on Windows platforms P2 because it extends IPC and process separation coverage to Windows Unblocks Windows testing and deployment for the broader multiprocess project CI is failing so check whether the failure is caused by this PR before a deep review Concept approval without stated reasons (hebasto) Suggested testing compatibility with clang-cl (Sjors) 2,541 lines added or modified outside tests 189 lines added or modified in tests 880 lines removed in total 102 files, 33 commits (+) #36097 xyzconstant mining: replace interrupt methods with cancellation arguments P2 · new feature CI failing 0 Strong 2,133 + 43 tests Simplify canceling in-flight blocking mining requests over IPC Eliminate extra round-trips and awkward out-of-band interrupt coordination for mining clients P2 because it integrates native request cancellation into libmultiprocess and the interface layer Allows IPC clients to cancel in-flight blocking calls directly without coordinating extra calls Ranking pass: Moved up: it changes mining IPC call mechanics (cancellation via promises) per agreed RFC #33575 , affecting external consumers' interface stability more than the other P2s. CI is failing; check whether the failure is from this PR before deep review No review verdicts recorded Substantive support with no open objections Direct cancellation simplifies both clients and servers over issuing separate interrupt calls (ryanofsky) 2,133 lines added or modified outside tests 43 lines added or modified in tests 616 lines removed in total 70 files, 2 commits (+) #30437 ryanofsky ipc: add bitcoin-mine test program P2 · unblocks #29432 Waiting on author 0 (+3) Blocked 219 + 41 tests Provide an end-to-end test executable to exercise and validate IPC mining outside the node process Help multiprocess Bitcoin Core development and external mining implementations like Stratum v2 P2 because it provides a standalone test client required to validate interfaces across process boundaries Unblocks progress on external mining process separation Reviewable immediately as nothing known invalidates review now Unaddressed objection: potential crash if block creation returns null during shutdown (w0xlt) Unaddressed objection: argument parsing bugs wrap negative or clamp low maxtries values (w0xlt) Objection answered: avoid shipping experimental binary in releases via dedicated build option (sedited, fanquake) Verified by testing standalone binary and functional tests on macOS (Sjors, BrandonOdiwuor) Concept approval as a usage example for mining interfaces (ismaelsadeeq) 219 lines added or modified outside tests 41 lines added or modified in tests 7 lines removed in total 10 files, 5 commits (+) #19460 ryanofsky multiprocess: Add bitcoin-wallet -ipcconnect option P2 · new feature Review #10102 first 0 Blocked 4,183 + 197 tests Allow the standalone wallet tool to connect to a running node over IPC instead of running strictly offline Prepare the wallet tool for future online actions like querying chain state and syncing balances P2 because it advances multiprocess communication by connecting wallet processes to the node It unblocks follow-up multiprocess wallet work in PR 19461 Review #10102 first Stacked on top of open multiprocess PR #10102 No review verdicts recorded Unaddressed objection: combining CLI tool and daemon behavior adds work and risks user footguns (ajtowns) Answered objection: offline operation remains fully supported without requiring a node (jonasschnelli) Approvals from accounts with no project history provided no rationale 4,183 lines added or modified outside tests 197 lines added or modified in tests 644 lines removed in total 149 files, 26 commits (+) #19461 ryanofsky multiprocess: Add bitcoin-gui -ipcconnect option P2 · new feature Review #10102 first 0 Blocked 4,222 + 197 tests Connect the GUI to an existing node process over IPC instead of spawning a new child process Let users start and stop the GUI independently of a long-running background node P2 because it lets GUI instances attach to and detach from an independent node process Advances process separation for multiprocess builds Unaddressed objection: GUI crashes on sendButtonClicked when using external signers or PSBTs (Sjors) Unaddressed objection: node crashes when GUI connects without -disablewallet to a wallet-free node (jimhashhq) Concept approval for the -ipcconnect option name and functionality (laanwj) Concept approval without stated reasons (meshcollider) Verified basic IPC connectivity works in manual testing (Sjors) 4,222 lines added or modified outside tests 197 lines added or modified in tests 662 lines removed in total 152 files, 28 commits (+) #36105 ryanofsky bitcoin wrapper: Fix Windows exec so wrapper waits for child process P2 · platform fix Ready 1 Strong 15 + 14 tests Make the Windows bitcoin wrapper wait for child processes and return their exit codes Allow scripts, external callers, and test suites to reliably check child process outcomes Re-enable skipped functional tests on Windows P2 because it fixes broken wrapper process management on Windows Resolves immediate wrapper exit so callers can track child processes and re-enables skipped tests Tested on Linux and Windows with the MSVCRT workaround dropped (cyb3ralbert) Concept approval without stated reasons (hebasto, hodlinator) All discussion questions and suggestions addressed 15 lines added or modified outside tests 14 lines added or modified in tests 21 lines removed in total 7 files, 3 commits (+) #36106 ryanofsky bitcoin wrapper: respect CMAKE_INSTALL_BINDIR/LIBEXECDIR P2 · bug fix Ready 1 Strong 42 + 71 tests Allow the bitcoin wrapper tool to locate internal executables when installed with custom directory layouts Fix immediate failure on distributions like Arch Linux where CMAKE_INSTALL_LIBEXECDIR is set to lib P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2 for consistency with #36105 : both are wrapper breakages on real install targets, and this one makes the wrapper fail outright on common distro layouts. P3 because it fixes runtime discovery of bitcoind and bitcoin-node by the multiprocess wrapper Prevents the wrapper from immediately failing with execvp on non-standard install paths Substantive support with all raised issues addressed Verified fix for custom layouts and approved the approach (hebasto) Verified the fix for the distribution issue and confirmed valgrind fix (cyb3ralbert) 42 lines added or modified outside tests 71 lines added or modified in tests 6 lines removed in total 6 files, 2 commits (+) #33117 D33r-Gee Interfaces: Expose UTXO Snapshot Loading and Add Progress Notifications P2 · new feature Ready 0 (+1) Strong 126 + 2 tests Allow GUI frontends and multiprocess clients to initiate UTXO snapshot loading Provide user progress feedback while snapshot coins are validated and populated P2 because it unblocks assumeutxo snapshot loading across process boundaries Directly enables downstream GUI implementations to load snapshots with progress feedback Strong support with no remaining objections after rebases and refactoring Verified by testing mainnet snapshot loads with downstream GUI branches (pinheadmz, Sjors) Resolved objection: passing file handles across IPC boundaries complicates separation (ryanofsky) Resolved objection: signaling progress per coin would fire over 100 million times (pinheadmz) 126 lines added or modified outside tests 2 lines added or modified in tests 21 lines removed in total 10 files, 3 commits (+) #36597 pseudoramdom wallet: return broadcast errors from CommitTransaction P3 · unblocks #1008 Waiting on author 0 Positive 150 + 110 tests Let wallet frontends learn whether a transaction was accepted into the mempool. Stops interfaces like the QML GUI from reporting transactions as sent when rejected by the node. P3 because it passes structured broadcast errors across process boundaries to frontends like the QML GUI. Unblocks out-of-process frontends from detecting and handling rejected transactions. Concept approval without stated reasons (w0xlt, Naomi-Gift) Author clarified why synchronous broadcast errors are needed rather than async alerts (maflcko) Open request to add interface test coverage for mempool rejections (ViniciusCestarii) 150 lines added or modified outside tests 110 lines added or modified in tests 116 lines removed in total 22 files, 4 commits (+) #35916 enirox001 fuzz: improve ipc fuzz coverage P3 · test coverage Ready 0 (+1) Strong 342 Improve IPC fuzz testing to exercise reverse callbacks and malformed payloads Catch process boundary serialization bugs and deserialization mismatches earlier P3 because it improves test coverage across process boundaries without fixing active bugs Helps prevent crashes from malformed IPC payloads but has no direct runtime impact Ready for review Awaiting re-review on updated deserialization checks Broad support with all technical objections resolved Verified by testing fuzz target updates from earlier review requests (jeanpablojp) Concept approval with previous error handling objections addressed (frankomosh) 342 lines added or modified outside tests 0 lines added or modified in tests 13 lines removed in total 3 files, 4 commits (+) #36060 151henry151 build: require KJ exception support for IPC P3 · platform fix Author silent 69d 0 Crickets 179 Prevent obscure compilation failures by checking libkj exception support at configure time when IPC is on Reduce build friction on systems where compiler capabilities are misdetected P3 because IPC binaries require libkj exception support to compile cleanly Reduces platform-specific build failures across BSD and Unix targets for multiprocess work Ready for review now with nothing known that would invalidate a review No review verdicts recorded No substantive comments or reviews yet 179 lines added or modified outside tests 0 lines added or modified in tests 0 lines removed in total 12 files, 3 commits (+) #36190 Bortlesboat test: Check bitcoin wrapper child exit status on windows P3 · test coverage Review #36105 first 0 (+2) Strong 15 + 55 tests Verify that the Windows wrapper correctly forwards child exit statuses and reports spawn failures Prevent regressions where child exit code -1 is conflated with process launch errors P3 because it adds Windows functional test coverage for child process exit status propagation Catches regressions where child exit code -1 is confused with spawn errors Review #36105 first The PR branch is stacked on open PR #36105 and includes its prerequisite commits Strong support with no open objections Verified by testing on Linux and Windows runners across both CRTs (cyb3ralbert) Finds the new tests well written and useful additions to test coverage (ryanofsky) 15 lines added or modified outside tests 55 lines added or modified in tests 20 lines removed in total 7 files, 5 commits (+) #36192 Sjors test: cover unsatisfiable mining timestamp P3 · test coverage Needs rebase 2 Strong 0 + 124 tests Test that block template creation fails cleanly when median time past reaches the future-time limit Verify template creation recovers one second later and keeps mining IPC connections alive P3 because it verifies IPC mining connections survive and recover from template errors Confirms the interface remains stable under an edge case that is infeasible on mainnet Strong support with no open objections (fjahr, ismaelsadeeq) Nonblocking suggestions on test location and runtime were dropped (fjahr, ismaelsadeeq) 0 lines added or modified outside tests 124 lines added or modified in tests 29 lines removed in total 6 files, 5 commits