Method

How the records on this site were built, in short. The details page has the full field vocabulary, the rules with examples, and the known doubts.

What counts as a bug

A crash, assert, hang, deadlock, data race, undefined behavior, or memory or file descriptor leak, in libmultiprocess or in Bitcoin Core code that exists because of IPC. Bugs only ever seen in tests count in full when the defect was in library or node code. Bugs in test code, and CI or build problems on IPC jobs, are included as their own groups, because flaky tests cost developer time. Wrong return values with no stability effect, compiler warnings and feature work are not included.

One bug per root cause

Each record is one root cause, which usually means one fix commit. A pull request that fixed three races is three records. A bug that was worked around and later fixed properly is one record. An issue that reported two different problems is two records. Splitting is a judgment call: counted differently, the total is 94 to 104 instead of 102.

What each page has

A fact box (status, symptom, where it was seen, first report, fix date, affected releases), then what happened, the root cause, the code, the fix and a timeline. The classification at the bottom gives the trigger, root cause kind, which side of the connection the code runs on, what kind of peer it takes, and whether the defect reached master or a release. Every independent report is linked and its reporter credited.

Where the reports came from

The git history of libmultiprocess and Bitcoin Core, a local copy of both projects' GitHub issues and pull requests, the multiprocess tracking issue, the maintainer's notes, and independent security reviews of the IPC code done in 2026.

Two passes

Candidate commits, pull requests and issues were listed by script and read one by one. A first reader wrote each record from the diff and the discussion. A second reader checked every field of the first 86 records against the fix, the pull request and each report, and corrected what was wrong. The 16 records added in October 2026 were checked against the code by the agent that wrote them, and have not had a second reader yet. Two interpretations of the finished set were then written, the second without reading the first; the findings keep what both support.

Dates

"Introduced" and "fixed" are the dates the change was merged, in UTC. A first report is the date of the earliest issue, comment or CI failure that shows this bug, even when it came years before anyone worked on it. Sightings under Antithesis count as tests, not as production.

Use of language models

Language models did much of the work: listing and triaging candidates, writing the first records, checking them a second time, and drafting the text of this site. Ryan Ofsky, the libmultiprocess maintainer, reviewed the results, settled the rules and made the judgment calls. Where a language model helped find or fix a bug, the bug's page says so in its credits, as it would for any contributor.

How this survey was made, and what we would do differently