AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Moderate 60 Bitcoin

Squashed 'src/ipc/libmultiprocess/' changes from a4f92969649..1fc65008f7d

Public commit record

What the developer wrote

Authored by Ryan Ofsky

91/100 · Strong
Squashed 'src/ipc/libmultiprocess/' changes from a4f92969649..1fc65008f7d

1fc65008f7d Merge bitcoin-core/libmultiprocess#237: Made SpawnProcess() behavior safe post fork()
5205a87cd90 test: check SpawnProcess post-fork safety
69652f0edfa Precompute argv before fork in SpawnProcess
30a8681de62 SpawnProcess: avoid fd leak on close failure
d0fc1081d09 Merge bitcoin-core/libmultiprocess#196: ci: Add NetBSD job
7b171f45bfc Merge bitcoin-core/libmultiprocess#234: doc: Fix typos and grammar in documentation and comments
861da39cae9 ci: Add NetBSD job
458745e3940 Fix various typos, spelling mistakes, and grammatical errors in design.md and source code comments.
585decc8561 Merge bitcoin-core/libmultiprocess#236: ci: Install binary package `capnproto` on OpenBSD instead of building it
14e926a3ff3 refactor: extract MakeArgv helper
1ee909393f4 ci: Install binary package `capnproto` on OpenBSD instead of building it
470fc518d4b Merge bitcoin-core/libmultiprocess#230: cmake: add ONLY_CAPNP target_capnp_sources option
2d8886f26c4 Merge bitcoin-core/libmultiprocess#228: Add versions.md and version.h files describing version branches and tags
c1838be565d Merge bitcoin-core/libmultiprocess#225: Improve and document act support
a173f1704ce Merge bitcoin-core/libmultiprocess#223: ci: Replace nix-shell with equivalent nix develop command
625eaca42fb Merge bitcoin-core/libmultiprocess#229: Design Documentation Update
cc234be73a6 Design doc update
81c652687b8 cmake: add ONLY_CAPNP target_capnp_sources option
6e01d2d766e Add versions.md and version.h files describing version branches and tags
4e3f8fa0d2c doc: add instructions for using act
81712ff6bbf ci: disable KVM and sandbox inside act containers
18a2237a8ef ci: Replace nix-shell with equivalent nix develop command

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 1fc65008f7d64161e84c08cbd93109a23dd6a1e9
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This commit updates the libmultiprocess library inside Bitcoin Core. The most important change fixes a classic multi-threaded 'fork safety' bug in the process-spawning code. Before the fix, the code could run a callback inside the child process after fork(), which can cause the child to deadlock forever if the parent happened to be holding a lock at the exact moment of fork. The patch moves that callback work into the parent before fork(), and also makes the child process use simple, non-throwing error handling after fork. Other changes are mostly documentation, CI build setup, and version tracking.

Recommended action

This is a defensive hardening fix with a regression test; it should be merged as part of normal subtree maintenance. Reviewers should verify the child path no longer calls fd_to_args and that the new test passes under sanitizers and on all supported platforms. No immediate emergency response is warranted, but downstream users relying on libmultiprocess should pick up the update.

Security signals we found

01

fork-safety fix in multi-threaded process spawning

02

callback moved from post-fork child to pre-fork parent

03

child post-fork path now uses async-signal-safe error handling and _exit()

04

new regression test specifically targets deadlock-on-fork behavior

05

header comment explicitly warns that ExecProcess is not safe post-fork in multi-threaded processes

Risk score

Why this scored 60/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 8/15
Affected reach 10/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.