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

Squashed 'src/ipc/libmultiprocess/' changes from 13424cf2ecc1..47d79db8a552

Public commit record

What the developer wrote

Authored by Ryan Ofsky

91/100 · Strong
Squashed 'src/ipc/libmultiprocess/' changes from 13424cf2ecc1..47d79db8a552

47d79db8a552 Merge bitcoin-core/libmultiprocess#201: bug: fix mptest hang, ProxyClient<Thread> deadlock in disconnect handler
f15ae9c9b9fb Merge bitcoin-core/libmultiprocess#211: Add .gitignore
4a269b21b8c8 bug: fix ProxyClient<Thread> deadlock if disconnected as IPC call is returning
85df96482c49 Use try_emplace in SetThread instead of threads.find
ca9b380ea91a Use std::optional in ConnThreads to allow shortening locks
9b0799113557 doc: describe ThreadContext struct and synchronization requirements
d60db601ed9b proxy-io.h: add Waiter::m_mutex thread safety annotations
4e365b019a9f ci: Use -Wthread-safety not -Wthread-safety-analysis
15d7bafbb001 Add .gitignore
fe1cd8c76131 Merge bitcoin-core/libmultiprocess#208: ci: Test minimum cmake version in olddeps job
b713a0b7bfbc Merge bitcoin-core/libmultiprocess#207: ci: output CMake version in CI script
0f580397c913 ci: Test minimum cmake version in olddeps job
d603dcc0eef0 ci: output CMake version in CI script

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 47d79db8a5528097b408e18f7b0bae11a6702d26
✓ 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 a helper library (libmultiprocess) used by Bitcoin Core for inter-process communication. The main functional change fixes a deadlock bug: when an IPC connection drops at the same moment a thread-related call is returning, the cleanup code could get stuck waiting for locks held by other threads. The patch restructures how thread objects are stored and how cleanup callbacks are removed so the locks are held for shorter periods and in a safer order. It also adds stricter thread-safety compiler checks and CI testing with older CMake versions. There is no direct evidence this is exploitable as a security vulnerability; it appears to be a robustness/reliability fix for a hang condition.

Recommended action

Treat as a normal reliability/robustness update. If Bitcoin Core is built with multiprocess support, ensure this subtree update is included to avoid potential IPC hangs on disconnect. No emergency security response is warranted based on the supplied materials, but monitor upstream libmultiprocess for any follow-up disclosures.

Security signals we found

01

Deadlock fix in IPC thread cleanup during connection disconnect

02

Restructured lock ordering and shortened critical sections for thread maps

03

Moved disconnect-callback removal onto event loop thread to prevent race with disconnect handler

04

Added/expanded thread-safety annotations (Mutex, Lock, MP_GUARDED_BY, MP_REQUIRES)

05

CI change to use -Wthread-safety instead of -Wthread-safety-analysis

Risk score

Why this scored 43/100

Our methodology →
Potential impact 12/30
Exploitability 5/25
Stealth signal 8/15
Affected reach 7/15
Confidence 7/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.