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

pull ryanofsky wants to merge 2 commits into bitcoin:31.x from ryanofsky:pr/subtree-9 changing 28 files +1049 −167
  1. ryanofsky commented at 1:41 am on March 30, 2026: 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 https://github.com/bitcoin-core/libmultiprocess/pull/249#issuecomment-4118596442. 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 https://github.com/bitcoin-core/libmultiprocess/pull/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

  2. Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f
    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
    2478a15ef9
  3. Merge commit '2478a15ef966cc93d47dd0f461a44be39bc51534' into pr/subtree-9 613a548648
  4. DrahtBot added the label Backport on Mar 30, 2026
  5. DrahtBot commented at 1:41 am on March 30, 2026: 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.

  6. Sjors referenced this in commit 35411ae38f on Mar 30, 2026
  7. Sjors commented at 7:28 am on March 30, 2026: member
    ACK 613a548648880314e78c3045d0ded12e29a4f036

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-03-31 12:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me