Merge bitcoin/bitcoin#35028: [31.x] Backports + rc3

c168baec80 doc: update manual pages for v31.0rc3 (fanquake)
275843f2a6 build: bump version to v31.0rc3 (fanquake)
afa8ba04e0 test: remove macOS REDUCE_EXPORTS exception workaround (Alfonso Roman Zubeldia)
1bc22a38a8 Squashed 'src/ipc/libmultiprocess/' changes from 70f632bda8..3edbe8f67c (fanquake)

Pull request description:

  Backports:
  * #35014

  Also contains a libmultiprocess subtree pull.
  Also bumps to `rc3` + regens manpages.

ACKs for top commit:
  Sjors:
    utACK c168baec80
  hebasto:
    ACK c168baec80.
  marcofleon:
    ACK c168baec80

Tree-SHA512: 88aaef85a6ce6018fe5233d5a4a46d75c57914af9ff41158b85533ddf5e42df45ed7f6cbfdbffe2c4d2db6853af1ff4473440ab5ecc62c9cadf070f5cdcab883
This commit is contained in:
merge-script
2026-04-08 20:04:06 +08:00
13 changed files with 39 additions and 41 deletions

View File

@@ -30,7 +30,7 @@ set(CLIENT_NAME "Bitcoin Core")
set(CLIENT_VERSION_MAJOR 31)
set(CLIENT_VERSION_MINOR 0)
set(CLIENT_VERSION_BUILD 0)
set(CLIENT_VERSION_RC 2)
set(CLIENT_VERSION_RC 3)
set(CLIENT_VERSION_IS_RELEASE "true")
set(COPYRIGHT_YEAR "2026")

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-CLI "1" "March 2026" "bitcoin-cli v31.0.0rc2" "User Commands"
.TH BITCOIN-CLI "1" "April 2026" "bitcoin-cli v31.0.0rc3" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli v31.0.0rc2
bitcoin-cli \- manual page for bitcoin-cli v31.0.0rc3
.SH SYNOPSIS
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR]
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v31.0.0rc2
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help <command>\/\fR
.SH DESCRIPTION
Bitcoin Core RPC client version v31.0.0rc2
Bitcoin Core RPC client version v31.0.0rc3
.PP
The bitcoin\-cli utility provides a command line interface to interact with a Bitcoin Core RPC server.
.PP

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-QT "1" "March 2026" "bitcoin-qt v31.0.0rc2" "User Commands"
.TH BITCOIN-QT "1" "April 2026" "bitcoin-qt v31.0.0rc3" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt v31.0.0rc2
bitcoin-qt \- manual page for bitcoin-qt v31.0.0rc3
.SH SYNOPSIS
.B bitcoin-qt
[\fI\,options\/\fR] [\fI\,URI\/\fR]
.SH DESCRIPTION
Bitcoin Core version v31.0.0rc2
Bitcoin Core version v31.0.0rc3
.PP
The bitcoin\-qt application provides a graphical interface for interacting with Bitcoin Core.
.PP

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-TX "1" "March 2026" "bitcoin-tx v31.0.0rc2" "User Commands"
.TH BITCOIN-TX "1" "April 2026" "bitcoin-tx v31.0.0rc3" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx v31.0.0rc2
bitcoin-tx \- manual page for bitcoin-tx v31.0.0rc3
.SH SYNOPSIS
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR]
@@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v31.0.0rc2
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR]
.SH DESCRIPTION
Bitcoin Core bitcoin\-tx utility version v31.0.0rc2
Bitcoin Core bitcoin\-tx utility version v31.0.0rc3
.PP
The bitcoin\-tx tool is used for creating and modifying bitcoin transactions.
.PP

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-UTIL "1" "March 2026" "bitcoin-util v31.0.0rc2" "User Commands"
.TH BITCOIN-UTIL "1" "April 2026" "bitcoin-util v31.0.0rc3" "User Commands"
.SH NAME
bitcoin-util \- manual page for bitcoin-util v31.0.0rc2
bitcoin-util \- manual page for bitcoin-util v31.0.0rc3
.SH SYNOPSIS
.B bitcoin-util
[\fI\,options\/\fR] [\fI\,command\/\fR]
@@ -9,7 +9,7 @@ bitcoin-util \- manual page for bitcoin-util v31.0.0rc2
.B bitcoin-util
[\fI\,options\/\fR] \fI\,grind <hex-block-header>\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-util utility version v31.0.0rc2
Bitcoin Core bitcoin\-util utility version v31.0.0rc3
.PP
The bitcoin\-util tool provides bitcoin related functionality that does not rely on the ability to access a running node. Available [commands] are listed below.
.SH OPTIONS

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-WALLET "1" "March 2026" "bitcoin-wallet v31.0.0rc2" "User Commands"
.TH BITCOIN-WALLET "1" "April 2026" "bitcoin-wallet v31.0.0rc3" "User Commands"
.SH NAME
bitcoin-wallet \- manual page for bitcoin-wallet v31.0.0rc2
bitcoin-wallet \- manual page for bitcoin-wallet v31.0.0rc3
.SH SYNOPSIS
.B bitcoin-wallet
[\fI\,options\/\fR] \fI\,<command>\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-wallet utility version v31.0.0rc2
Bitcoin Core bitcoin\-wallet utility version v31.0.0rc3
.PP
bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
.PP

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN "1" "March 2026" "bitcoin v31.0.0rc2" "User Commands"
.TH BITCOIN "1" "April 2026" "bitcoin v31.0.0rc3" "User Commands"
.SH NAME
bitcoin \- manual page for bitcoin v31.0.0rc2
bitcoin \- manual page for bitcoin v31.0.0rc3
.SH SYNOPSIS
.B bitcoin
[\fI\,OPTIONS\/\fR] \fI\,COMMAND\/\fR...

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIND "1" "March 2026" "bitcoind v31.0.0rc2" "User Commands"
.TH BITCOIND "1" "April 2026" "bitcoind v31.0.0rc3" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v31.0.0rc2
bitcoind \- manual page for bitcoind v31.0.0rc3
.SH SYNOPSIS
.B bitcoind
[\fI\,options\/\fR]
.SH DESCRIPTION
Bitcoin Core daemon version v31.0.0rc2 bitcoind
Bitcoin Core daemon version v31.0.0rc3 bitcoind
.PP
The Bitcoin Core daemon (bitcoind) is a headless program that connects to the Bitcoin network to validate and relay transactions and blocks, as well as relaying addresses.
.PP

View File

@@ -7,33 +7,37 @@ Library versions are tracked with simple
Versioning policy is described in the [version.h](../include/mp/version.h)
include.
## v9
## v10
- Current unstable version.
## [v9.0](https://github.com/bitcoin-core/libmultiprocess/commits/v9.0)
- Fixes race conditions where worker thread could be used after destruction, where getParams() could be called after request cancel, and where m_on_cancel could be called after request finishes.
- Adds `CustomHasField` hook to map Cap'n Proto null values to C++ null values.
- Improves `CustomBuildField` for `std::optional` to use move semantics.
- Adds LLVM 22 compatibility fix in type-map.
- Used in Bitcoin Core master branch, pulled in by [#34804](https://github.com/bitcoin/bitcoin/pull/34804). Also pulled into Bitcoin Core 31.x stable branch by [#34952](https://github.com/bitcoin/bitcoin/pull/34952).
## [v8.0](https://github.com/bitcoin-core/libmultiprocess/commits/v8.0)
- Better support for non-libmultiprocess IPC clients: avoiding errors on unclean disconnects, and allowing simultaneous requests to worker threads which previously triggered "thread busy" errors.
- Used in Bitcoin Core, pulled in by [#34422](https://github.com/bitcoin/bitcoin/pull/34422).
- Intermediate version used in Bitcoin Core master branch between 30.x and 31.x branches, pulled in by [#34422](https://github.com/bitcoin/bitcoin/pull/34422).
## [v7.0](https://github.com/bitcoin-core/libmultiprocess/commits/v7.0)
- Adds SpawnProcess race fix, cmake `target_capnp_sources` option, ci and documentation improvements. Adds `version.h` header declaring major and minor version numbers.
- Used in Bitcoin Core, pulled in by [#34363](https://github.com/bitcoin/bitcoin/pull/34363).
- Intermediate version used in Bitcoin Core master branch between 30.x and 31.x branches, pulled in by [#34363](https://github.com/bitcoin/bitcoin/pull/34363).
## [v7.0-pre2](https://github.com/bitcoin-core/libmultiprocess/commits/v7.0-pre2)
- Fixes intermittent mptest hang and makes other minor improvements.
- Used in Bitcoin Core 30.1 and 30.2 releases and 30.x branch, pulled in by [#33518](https://github.com/bitcoin/bitcoin/pull/33518) and [#33519](https://github.com/bitcoin/bitcoin/pull/33519).
## [v7.0-pre1](https://github.com/bitcoin-core/libmultiprocess/commits/v7.0-pre1)
- Adds support for log levels to reduce logging and "thread busy" error to avoid a crash on misuse.
- Minimum required version for Bitcoin Core 30.1 and 30.2 releases and 30.x branch, pulled in by [#33412](https://github.com/bitcoin/bitcoin/pull/33412), [#33518](https://github.com/bitcoin/bitcoin/pull/33518), and [#33519](https://github.com/bitcoin/bitcoin/pull/33519).
- Minimum required version since Bitcoin Core 30.1, pulled in by [#33412](https://github.com/bitcoin/bitcoin/pull/33412), [#33518](https://github.com/bitcoin/bitcoin/pull/33518), and [#33519](https://github.com/bitcoin/bitcoin/pull/33519).
## [v6.0](https://github.com/bitcoin-core/libmultiprocess/commits/v6.0)
- Adds CI scripts and build and test fixes.
- Used in Bitcoin Core 30.0 release, pulled in by [#32345](https://github.com/bitcoin/bitcoin/pull/32345), [#33241](https://github.com/bitcoin/bitcoin/pull/33241), and [#33322](https://github.com/bitcoin/bitcoin/pull/33322).
## [v6.0-pre1](https://github.com/bitcoin-core/libmultiprocess/commits/v6.0-pre1)
- Adds fixes for unclean shutdowns and thread sanitizer issues.
- Drops `EventLoop::addClient` and `EventLoop::removeClient` methods,
requiring clients to use new `EventLoopRef` class instead.

View File

@@ -189,7 +189,7 @@ auto PassField(Priority<1>, TypeList<>, ServerContext& server_context, const Fn&
}
})) {
MP_LOG(loop, Log::Error) << "IPC server request #" << req << " uncaught exception (" << kj::str(*exception).cStr() << ")";
throw kj::mv(*exception);
kj::throwRecoverableException(kj::mv(*exception));
}
return call_context;
// End of scope: if KJ_DEFER was reached, it runs here

View File

@@ -24,7 +24,7 @@
//! pointing at the prior merge commit. The /doc/versions.md file should also be
//! updated, noting any significant or incompatible changes made since the
//! previous version.
#define MP_MAJOR_VERSION 9
#define MP_MAJOR_VERSION 10
//! Minor version number. Should be incremented in stable branches after
//! backporting changes. The /doc/versions.md file should also be updated to

View File

@@ -20,6 +20,8 @@
namespace {
constexpr auto FAILURE_TIMEOUT = std::chrono::seconds{30};
// Poll for child process exit using waitpid(..., WNOHANG) until the child exits
// or timeout expires. Returns true if the child exited and status_out was set.
// Returns false on timeout or error.
@@ -94,9 +96,9 @@ KJ_TEST("SpawnProcess does not run callback in child")
::close(fd);
int status{0};
// Give the child up to 1 second to exit. If it does not, terminate it and
// Give the child some time to exit. If it does not, terminate it and
// reap it to avoid leaving a zombie behind.
const bool exited{WaitPidWithTimeout(pid, std::chrono::milliseconds{1000}, status)};
const bool exited{WaitPidWithTimeout(pid, FAILURE_TIMEOUT, status)};
if (!exited) {
::kill(pid, SIGKILL);
::waitpid(pid, &status, /*options=*/0);

View File

@@ -10,7 +10,6 @@ from dataclasses import dataclass
from io import BytesIO
from pathlib import Path
import shutil
import platform
from typing import Optional
from test_framework.messages import CBlock
@@ -161,12 +160,5 @@ async def make_mining_ctx(self):
return ctx, mining
def assert_capnp_failed(e, description_prefix):
if e.description == "remote exception: unknown non-KJ exception of type: kj::Exception":
# macOS + REDUCE_EXPORTS bug: Cap'n Proto fails to recognize
# its own exception type and returns a generic error instead.
# https://github.com/bitcoin/bitcoin/pull/34422#discussion_r2863852691
# Assert this only occurs on Darwin until fixed.
assert_equal(platform.system(), "Darwin")
else:
assert e.description.startswith(description_prefix), f"Expected description starting with '{description_prefix}', got '{e.description}'"
assert e.description.startswith(description_prefix), f"Expected description starting with '{description_prefix}', got '{e.description}'"
assert_equal(e.type, "FAILED")