ipc: Update libmultiprocess subtree and drop fuzz test workaround #35720

pull maflcko wants to merge 6 commits into bitcoin:master from maflcko:2607-subtree-bump-libmultiprocess changing 73 files +148 −177
  1. maflcko commented at 10:52 AM on July 14, 2026: member

    Includes several changes, to first update the subtree. Then, modify the fuzz test to address review comments:

  2. Squashed 'src/ipc/libmultiprocess/' changes from 28e056576a..e8de5c7b68
    e8de5c7b68 Merge bitcoin-core/libmultiprocess#305: refactor: memcpy to std::ranges::copy to work around ubsan warn
    9307e68e5a Merge bitcoin-core/libmultiprocess#306: doc: Bump version 12 > 13
    fac7b9b7f6 refactor: memcpy to std::ranges::copy to work around ubsan warn
    1bd7025609 Merge bitcoin-core/libmultiprocess#297: test: add map serialization round-trip coverage
    438fdd243d doc: Bump version 12 > 13
    463d073cb8 test: rename vBool to vector_bool
    85df233845 test: add mapStringInt to foo.capnp to cover map serialization and deserialization
    
    git-subtree-dir: src/ipc/libmultiprocess
    git-subtree-split: e8de5c7b68e0ae21c94ae92aa22e5c3b213f9c12
    6d5f753921
  3. Merge commit '6d5f753921578eefdd3fce64cfc8ee7951b6cbc4' into HEAD
    HEAD is the prior subtree update commit
    'a9d1b652f324126ef7e80d9ab0b9e4f60019dade'
    fa911d815d
  4. DrahtBot commented at 10:52 AM on July 14, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

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

    <!--006a51241073e994b41acfe9ec718e94-->

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/35720.

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

    See the guideline and AI policy for information on the review process.

    Type Reviewers
    ACK ryanofsky
    Stale ACK sedited, janb84

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

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #35680 (private broadcast: bound memory use of broadcast attempts by instagibbs)
    • #35511 (RFC: consensus: Make CAmount a class by hodlinator)
    • #35482 (fuzz: exercise the transaction-handling path in process_message(s) by HowHsu)
    • #34969 (fuzz: several improvements to scriptpubkeyman harness by brunoerg)
    • #34264 (fuzz: Extend spend coverage by Chand-ra)
    • #32729 (test, refactor: extract script template helpers and expand sigop coverage by l0rinc)
    • #29418 (rpc: provide per message stats for global traffic via new RPC 'getnetmsgstats' by vasild)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  5. fanquake requested review from ryanofsky on Jul 14, 2026
  6. in src/ipc/test/fuzz/ipc.cpp:95 in fa8266748a
      90 | @@ -91,9 +91,8 @@ FUZZ_TARGET(ipc, .init = initialize_ipc)
      91 |  {
      92 |      auto& ipc = *g_ipc;
      93 |      FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
      94 | -    const size_t iterations = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(1, 64);
      95 | -
      96 | -    for (size_t i = 0; i < iterations; ++i) {
      97 | +    LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 64)
      98 | +    {
    


    ryanofsky commented at 11:16 AM on July 14, 2026:

    In commit "fuzz: Use LIMITED_WHILE over for-loop with consumed size integral" (fa8266748abb0f3057ae2e81f9f4fd8dd220fe12)

    Would seem more consistent to use trailing brace


    maflcko commented at 11:50 AM on July 14, 2026:

    Sure, done. Also added two clang-format commits. Let me know if they are too spicy and if they should be dropped, but I think they should be harmless and fine.


    ryanofsky commented at 3:03 PM on July 14, 2026:

    re: #35720 (review)

    Sure, done. Also added two clang-format commits. Let me know if they are too spicy and if they should be dropped, but I think they should be harmless and fine.

    Thanks for the formatting fix. IMO, the new commits seem fine to keep but I do think separate PRs are better in cases like this to make sure changes get better review, and reviewers aren't put in a position of having to do partial reviews or rubber stamp changes they are not interested in. This case is not a big deal, but unfocused PRs in general seem like a risk it's nice to avoid

  7. maflcko added the label interfaces on Jul 14, 2026
  8. maflcko added the label IPC on Jul 14, 2026
  9. maflcko commented at 11:21 AM on July 14, 2026: member

    @willcl-ark Looks like you added an IPC label two weeks ago? However, there already is an existing interfaces label for this? Maybe it could make sense to remove your IPC label and instead rename interfaces to IPC? Otherwise, it will be unclear what label to use.

  10. ryanofsky approved
  11. ryanofsky commented at 11:21 AM on July 14, 2026: contributor

    Code review ACK fa1ecc201d08dd17110804685fb0318f7f1c8416. Nice fuzz test improvements and it is interesting to see how LIMITED_WHILE works. Seems like it should help the fuzzer generate better inputs.

  12. sedited approved
  13. sedited commented at 11:30 AM on July 14, 2026: contributor

    ACK fa1ecc201d08dd17110804685fb0318f7f1c8416

  14. fuzz: Use LIMITED_WHILE over for-loop with consumed size integral
    This is a style cleanup. The general pattern to use `LIMITED_WHILE`,
    which all other fuzz tests use, has some benefits:
    
    * When no data is available, a simple and single (let's say) 64 value in
      the fuzz input will not result in 64 loops over the same body with the
      same default/fallback values.
    * When no data is available, `ConsumeBool` falls back to `false` and
      breaks the loop early.
    * When further data is available, the overhead is just a single byte,
      making it also possibly easier for the fuzz engine to mutate the data,
      as a single int that influences the whole remainder of the fuzz input
      can lead to the 'havoc' effect.
    * When a crash is reduced, deleting bytes will directly influence the
      execution length, so byte-length of the fuzz input roughly corresponds
      to run-time length.
    fa55385ab3
  15. fuzz: Remove unused workaround after fix in libmultiprocess byte-span serializer fa1a9bde5a
  16. fuzz: Clang-format LIMITED_WHILE like while fa0d777ce2
  17. janb84 commented at 11:40 AM on July 14, 2026: contributor

    cr ACK fa1ecc201d08dd17110804685fb0318f7f1c8416

    Also checked that subtree matches upstream and is an ancestor of upstream master, all green.

  18. fuzz: clang-format LIMITED_WHILE
    This is a whitespace-only clang-format change.
    
    To verify it, one can run:
    
    ```sh
    (git show | git apply --reverse ) && ( git diff -U0 | ./contrib/devtools/clang-format-diff.py -p1 -i -v ) && git diff HEAD
    ```
    
    A few minor, non-macro formatting adjustments were made in touched files:
    
    * `src/wallet/test/fuzz/crypter.cpp`: Removed a redundant double semicolon
    * `src/test/fuzz/txorphan.cpp`: Corrected indentation on an `else if` block.
    * `src/test/fuzz/mini_miner.cpp`: Removed an unnecessary empty line.
    fab8eeed82
  19. maflcko force-pushed on Jul 14, 2026
  20. DrahtBot added the label CI failed on Jul 14, 2026
  21. DrahtBot removed the label CI failed on Jul 14, 2026
  22. ryanofsky approved
  23. ryanofsky commented at 3:04 PM on July 14, 2026: contributor

    Code review ACK fab8eeed82cc784f05a7407da0245e6f44563778. Just fuzz test clang-format cleanups added since last review, which seem nice

  24. DrahtBot requested review from sedited on Jul 14, 2026
  25. DrahtBot requested review from janb84 on Jul 14, 2026
  26. fanquake merged this on Jul 14, 2026
  27. fanquake closed this on Jul 14, 2026

  28. maflcko deleted the branch on Jul 14, 2026

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-07-15 01:51 UTC

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