Skip to content

Update libmultiprocess subtree in 31.x branch to fix race conditions on disconnects#34952

Merged
fanquake merged 2 commits into
bitcoin:31.xfrom
ryanofsky:pr/subtree-9
Apr 1, 2026
Merged

Update libmultiprocess subtree in 31.x branch to fix race conditions on disconnects#34952
fanquake merged 2 commits into
bitcoin:31.xfrom
ryanofsky:pr/subtree-9

Conversation

@ryanofsky

Copy link
Copy Markdown
Contributor

This PR is a backport of #34804 to the 31.x branch. (Both PR's point to the same source branch, they just have different target branches.) Some previous discussion about whether these changes should be merged into 31.x happened in bitcoin-core/libmultiprocess#249 (comment). The changes fix some IPC crashes that can happen with broken clients and unlucky thread timing that have only been seen in tests and antithesis runs, but the fixes are fairly simple and seem unlikely to cause new problems. The other changes in the PR are mostly CI/documentation/test changes and should also be safe.

Includes:

The main change is bitcoin-core/libmultiprocess#249 which fixes 3 intermittent race conditions detected in bitcoin core CI and antithesis: #34711/#34756, #34777, and #34782.

The changes can be verified by running test/lint/git-subtree-check.sh src/ipc/libmultiprocess as described in developer notes and lint instructions

…da8f

70f632bda8f Merge bitcoin-core/libmultiprocess#265: ci: set LC_ALL in shell scripts
8e8e564259a Merge bitcoin-core/libmultiprocess#249: fixes for race conditions on disconnects
05d34cc2ec3 ci: set LC_ALL in shell scripts
e606fd84a8c Merge bitcoin-core/libmultiprocess#264: ci: reduce nproc multipliers
ff0eed1bf18 refactor: Use loop variable in type-context.h
ff1d8ba172a refactor: Move type-context.h getParams() call closer to use
1dbc59a4aa3 race fix: m_on_cancel called after request finishes
1643d05ba07 test: m_on_cancel called after request finishes
f5509a31fcc race fix: getParams() called after request cancel
4a60c39f24a test: getParams() called after request cancel
f11ec29ed20 race fix: worker thread destroyed before it is initialized
a1d643348f4 test: worker thread destroyed before it is initialized
336023382c4 ci: reduce nproc multipliers
b090beb9651 Merge bitcoin-core/libmultiprocess#256: ci: cache gnu32 nix store
be8622816da ci: cache gnu32 nix store
975270b619c Merge bitcoin-core/libmultiprocess#263: ci: bump timeout factor to 40
09f10e5a598 ci: bump timeout factor to 40
db8f76ad290 Merge bitcoin-core/libmultiprocess#253: ci: run some Bitcoin Core CI jobs
55a9b557b19 ci: set Bitcoin Core CI test repetition
fb0fc84d556 ci: add TSan job with instrumented libc++
0f29c38725b ci: add Bitcoin Core IPC tests (ASan + macOS)
3f64320315d Merge bitcoin-core/libmultiprocess#262: ci: enable clang-tidy in macOS job, use nullptr
cd9f8bdc9f0 Merge bitcoin-core/libmultiprocess#258: log: add socket connected info message and demote destroy logs to debug
b5d6258a42f Merge bitcoin-core/libmultiprocess#255: fix: use unsigned char cast and sizeof in LogEscape escape sequence
d94688e2c32 Merge bitcoin-core/libmultiprocess#251: Improved CustomBuildField for std::optional in IPC/libmultiprocess
a9499fad755 mp: use nullptr with pthread_threadid_np
f499e37850f ci: enable clang-tidy in macOS job
98f1352159d log: add socket connected info message and demote destroy logs to debug
554a481ea73 fix: use unsigned char cast and sizeof in LogEscape escape sequence
1977b9f3f65 Use std::forward in CustomBuildField for std::optional to allow move semantics, resolves FIXME
22bec918c97 Merge bitcoin-core/libmultiprocess#247: type-map: Work around LLVM 22 "out of bounds index" error
8a5e3ae6ed2 Merge bitcoin-core/libmultiprocess#242: proxy-types: add CustomHasField hook to map Cap'n Proto values to null C++ values
e8d35246918 Merge bitcoin-core/libmultiprocess#246: doc: Bump version 8 > 9
97d877053b6 proxy-types: add CustomHasField hook for nullable decode paths
8c2f10252c9 refactor: add missing includes to mp/type-data.h
b1638aceb40 doc: Bump version 8 > 9
f61af487217 type-map: Work around LLVM 22 "out of bounds index" error

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 70f632bda8f80449b6240f98da768206a535a04e
@DrahtBot

DrahtBot commented Mar 30, 2026

Copy link
Copy Markdown
Contributor

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK Sjors

If your review is incorrectly listed, please copy-paste <!--meta-tag:bot-skip--> into the comment that the bot should ignore.

Sjors added a commit to Sjors/dev-utils that referenced this pull request Mar 30, 2026
Handle detached HEAD rebase refs in --since-ack, add a --pr
override for ambiguous PR matches, and regenerate the man
page.

For example, ryanofsky/pr/subtree-9 currently matches
bitcoin/bitcoin#34804 and bitcoin/bitcoin#34952, so require
--pr 34804 or --pr 34952 instead of guessing.
@Sjors

Sjors commented Mar 30, 2026

Copy link
Copy Markdown
Member

ACK 613a548

@Sjors Sjors mentioned this pull request Mar 31, 2026
13 tasks
@achow101 achow101 added this to the 31.0 milestone Mar 31, 2026
@fanquake fanquake merged commit 7375940 into bitcoin:31.x Apr 1, 2026
53 checks passed
csjones added a commit to 21-DOT-DEV/swift-bitcoinkernel that referenced this pull request Apr 11, 2026
c96d9c28b3f Merge bitcoin/bitcoin#35034: [31.x] Fix guix build and rc4
4a5fdb0d88a doc: update manpages for v31.0rc4
7d56e1017db build: bump version to v31.0rc4
2937d4ba417 guix: Restore download and build-system-cmake modules
cc14d7ad3e7 Merge bitcoin/bitcoin#35028: [31.x] Backports + rc3
c168baec809 doc: update manual pages for v31.0rc3
275843f2a61 build: bump version to v31.0rc3
afa8ba04e00 test: remove macOS REDUCE_EXPORTS exception workaround
0df3ce87d90 Update libmultiprocess subtree to latest master
1bc22a38a8f Squashed 'src/ipc/libmultiprocess/' changes from 70f632bda8..3edbe8f67c
e7d520dcc6b Merge bitcoin/bitcoin#34942: [31.x] Backports
ef10b2ec657 guix: Clean up module list in manifest
f0e1014c396 kernel: Remove NONNULL annotation from destroy method
56cdeab8b54 depends, qt: Fix build on aarch64 macOS 26.4
f3b64aa4053 fuzz: Use CAmount for storing best_waste
98551a0efdc fuzz: Remove unused g_setup pointers
7375940eb2c Merge bitcoin/bitcoin#34952: Update libmultiprocess subtree in 31.x branch to fix race conditions on disconnects
2478a15ef96 Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f
613a5486488 Merge commit '2478a15ef966cc93d47dd0f461a44be39bc51534' into pr/subtree-9

git-subtree-dir: Vendor/bitcoin
git-subtree-split: c96d9c28b3f5bc71b54ba1d9d0b146ef2383caaf
csjones added a commit to 21-DOT-DEV/swift-bitcoinkernel that referenced this pull request Apr 11, 2026
* Align Swift API with Bitcoin Core v31.0 release changes

Remove payTxFee (removed upstream) and maxOrphanTx (no-op stub).
Add privateBroadcast and txoSpenderIndex config options. Update
dbCache doc comment with new default. Add mempoolOnly and
returnSpendingTx parameters to getTxSpendingPrevout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Squashed 'Vendor/bitcoin/' content from commit e25b4bcc

git-subtree-dir: Vendor/bitcoin
git-subtree-split: e25b4bcc3e6270dcd2848d4314d14f19fea13374

* Squashed 'Vendor/bitcoin/' changes from f0e2cbc5e5e..c96d9c28b3f

c96d9c28b3f Merge bitcoin/bitcoin#35034: [31.x] Fix guix build and rc4
4a5fdb0d88a doc: update manpages for v31.0rc4
7d56e1017db build: bump version to v31.0rc4
2937d4ba417 guix: Restore download and build-system-cmake modules
cc14d7ad3e7 Merge bitcoin/bitcoin#35028: [31.x] Backports + rc3
c168baec809 doc: update manual pages for v31.0rc3
275843f2a61 build: bump version to v31.0rc3
afa8ba04e00 test: remove macOS REDUCE_EXPORTS exception workaround
0df3ce87d90 Update libmultiprocess subtree to latest master
1bc22a38a8f Squashed 'src/ipc/libmultiprocess/' changes from 70f632bda8..3edbe8f67c
e7d520dcc6b Merge bitcoin/bitcoin#34942: [31.x] Backports
ef10b2ec657 guix: Clean up module list in manifest
f0e1014c396 kernel: Remove NONNULL annotation from destroy method
56cdeab8b54 depends, qt: Fix build on aarch64 macOS 26.4
f3b64aa4053 fuzz: Use CAmount for storing best_waste
98551a0efdc fuzz: Remove unused g_setup pointers
7375940eb2c Merge bitcoin/bitcoin#34952: Update libmultiprocess subtree in 31.x branch to fix race conditions on disconnects
2478a15ef96 Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f
613a5486488 Merge commit '2478a15ef966cc93d47dd0f461a44be39bc51534' into pr/subtree-9

git-subtree-dir: Vendor/bitcoin
git-subtree-split: c96d9c28b3f5bc71b54ba1d9d0b146ef2383caaf

* Add header search paths for libbitcoinkernel to bitcoind target

Remove duplicate header files from bitcoind/src that are now provided by libbitcoinkernel. Add header search paths to allow bitcoind to find kernel headers in the extraction directory.

---------

Co-authored-by: csjones <637026+csjones@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
morozow pushed a commit to morozow/bitcoin_rd that referenced this pull request May 8, 2026
… fix race conditions on disconnects

2478a15 Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f (Ryan Ofsky)

Pull request description:

  This PR is a backport of bitcoin#34804 to the 31.x branch. (Both PR's point to the same source branch, they just have different target branches.) Some previous discussion about whether these changes should be merged into 31.x happened in bitcoin-core/libmultiprocess#249 (comment). The changes fix some IPC crashes that can happen with broken clients and unlucky thread timing that have only been seen in tests and antithesis runs, but the fixes are fairly simple and seem unlikely to cause new problems. The other changes in the PR are mostly CI/documentation/test changes and should also be safe.

  Includes:

  - bitcoin-core/libmultiprocess#246
  - bitcoin-core/libmultiprocess#242
  - bitcoin-core/libmultiprocess#247
  - bitcoin-core/libmultiprocess#251
  - bitcoin-core/libmultiprocess#255
  - bitcoin-core/libmultiprocess#258
  - bitcoin-core/libmultiprocess#262
  - bitcoin-core/libmultiprocess#253
  - bitcoin-core/libmultiprocess#263
  - bitcoin-core/libmultiprocess#256
  - bitcoin-core/libmultiprocess#264
  - bitcoin-core/libmultiprocess#249
  - bitcoin-core/libmultiprocess#265

  The main change is bitcoin-core/libmultiprocess#249 which fixes 3 intermittent race conditions detected in bitcoin core CI and antithesis: bitcoin#34711/bitcoin#34756, bitcoin#34777, and bitcoin#34782.

  The changes can be verified by running `test/lint/git-subtree-check.sh src/ipc/libmultiprocess` as described in [developer notes](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#subtrees) and [lint instructions](https://github.com/bitcoin/bitcoin/tree/master/test/lint#git-subtree-checksh)

ACKs for top commit:
  Sjors:
    ACK 85c016b

Tree-SHA512: 54358428dc5a9cea84c3e816136ab828e702fc04b5af03cfd81c60522f1de491bf4867aed2e6c6791da2725dff2004b398ebbf42dd882cc22a5912bc5945cb6e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants