Skip to content

Commit 66b4e30

Browse files
committed
Merge commit '7a6d210989af56a03d7efa79f1f3a90047bb88fe' into 2026/04/libmultiprocess-subtree
2 parents 613a548 + 7a6d210 commit 66b4e30

File tree

4 files changed

+17
-11
lines changed

4 files changed

+17
-11
lines changed

src/ipc/libmultiprocess/doc/versions.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,37 @@ Library versions are tracked with simple
77
Versioning policy is described in the [version.h](../include/mp/version.h)
88
include.
99

10-
## v9
10+
## v10
1111
- Current unstable version.
1212

13+
## [v9.0](https://github.com/bitcoin-core/libmultiprocess/commits/v9.0)
14+
- 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.
15+
- Adds `CustomHasField` hook to map Cap'n Proto null values to C++ null values.
16+
- Improves `CustomBuildField` for `std::optional` to use move semantics.
17+
- Adds LLVM 22 compatibility fix in type-map.
18+
- 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).
19+
1320
## [v8.0](https://github.com/bitcoin-core/libmultiprocess/commits/v8.0)
1421
- 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.
15-
- Used in Bitcoin Core, pulled in by [#34422](https://github.com/bitcoin/bitcoin/pull/34422).
22+
- 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).
1623

1724
## [v7.0](https://github.com/bitcoin-core/libmultiprocess/commits/v7.0)
1825
- Adds SpawnProcess race fix, cmake `target_capnp_sources` option, ci and documentation improvements. Adds `version.h` header declaring major and minor version numbers.
19-
- Used in Bitcoin Core, pulled in by [#34363](https://github.com/bitcoin/bitcoin/pull/34363).
26+
- 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).
2027

2128
## [v7.0-pre2](https://github.com/bitcoin-core/libmultiprocess/commits/v7.0-pre2)
2229
- Fixes intermittent mptest hang and makes other minor improvements.
2330
- 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).
2431

2532
## [v7.0-pre1](https://github.com/bitcoin-core/libmultiprocess/commits/v7.0-pre1)
26-
2733
- Adds support for log levels to reduce logging and "thread busy" error to avoid a crash on misuse.
28-
- 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).
34+
- 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).
2935

3036
## [v6.0](https://github.com/bitcoin-core/libmultiprocess/commits/v6.0)
31-
3237
- Adds CI scripts and build and test fixes.
3338
- 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).
3439

3540
## [v6.0-pre1](https://github.com/bitcoin-core/libmultiprocess/commits/v6.0-pre1)
36-
3741
- Adds fixes for unclean shutdowns and thread sanitizer issues.
3842
- Drops `EventLoop::addClient` and `EventLoop::removeClient` methods,
3943
requiring clients to use new `EventLoopRef` class instead.

src/ipc/libmultiprocess/include/mp/type-context.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ auto PassField(Priority<1>, TypeList<>, ServerContext& server_context, const Fn&
189189
}
190190
})) {
191191
MP_LOG(loop, Log::Error) << "IPC server request #" << req << " uncaught exception (" << kj::str(*exception).cStr() << ")";
192-
throw kj::mv(*exception);
192+
kj::throwRecoverableException(kj::mv(*exception));
193193
}
194194
return call_context;
195195
// End of scope: if KJ_DEFER was reached, it runs here

src/ipc/libmultiprocess/include/mp/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
//! pointing at the prior merge commit. The /doc/versions.md file should also be
2525
//! updated, noting any significant or incompatible changes made since the
2626
//! previous version.
27-
#define MP_MAJOR_VERSION 9
27+
#define MP_MAJOR_VERSION 10
2828

2929
//! Minor version number. Should be incremented in stable branches after
3030
//! backporting changes. The /doc/versions.md file should also be updated to

src/ipc/libmultiprocess/test/mp/test/spawn_tests.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
namespace {
2222

23+
constexpr auto FAILURE_TIMEOUT = std::chrono::seconds{30};
24+
2325
// Poll for child process exit using waitpid(..., WNOHANG) until the child exits
2426
// or timeout expires. Returns true if the child exited and status_out was set.
2527
// Returns false on timeout or error.
@@ -94,9 +96,9 @@ KJ_TEST("SpawnProcess does not run callback in child")
9496
::close(fd);
9597

9698
int status{0};
97-
// Give the child up to 1 second to exit. If it does not, terminate it and
99+
// Give the child some time to exit. If it does not, terminate it and
98100
// reap it to avoid leaving a zombie behind.
99-
const bool exited{WaitPidWithTimeout(pid, std::chrono::milliseconds{1000}, status)};
101+
const bool exited{WaitPidWithTimeout(pid, FAILURE_TIMEOUT, status)};
100102
if (!exited) {
101103
::kill(pid, SIGKILL);
102104
::waitpid(pid, &status, /*options=*/0);

0 commit comments

Comments
 (0)