PR is a draft since this is less of a priority compared to other multiprocess PR’s (see tracking issue #28722). Also it would probably make sense to split this up into separate commits. But the code is working and clean, and this could be reviewed and tested.
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.
LLM Linter (✨ experimental)
Possible typos and grammar issues:
“needs be to called” -> “needs to be called” [grammatical error: missing “to” in infinitive]
“//! up its own state (calling ProxyServer destructors, etc) on disconnect,” -> “//! clean up its own state (calling ProxyServer destructors, etc.) on disconnect,” [fragment/missing verb; “clean up” restores meaning; add period after “etc” for completeness]
Possible places where named args for integral literals may be used (e.g. func(x, /*named_arg=*/0) in C++, and func(x, named_arg=0) in Python):
socket(addr.sun_family, SOCK_STREAM, 0) in src/ipc/process.cpp
socket(addr.sun_family, SOCK_STREAM, 0) in src/ipc/process.cpp
2025-12-12
ryanofsky force-pushed
on Apr 30, 2025
ryanofsky
commented at 12:47 pm on April 30, 2025:
contributor
hebasto
commented at 1:47 pm on April 30, 2025:
member
Concept ACK.
DrahtBot added the label
CI failed
on Apr 30, 2025
DrahtBot
commented at 3:00 pm on April 30, 2025:
contributor
🚧 At least one of the CI tasks failed.
Task multiprocess, i686, DEBUG: https://github.com/bitcoin/bitcoin/runs/41420704031
LLM reason (✨ experimental): The CI failure is caused by an assertion failure in the IPC test suite due to a nullptr dereference.
Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
Sjors
commented at 7:12 pm on April 30, 2025:
member
I guess the easiest way to test this would be to combine it with:
#31756 so I can bake a Widnows guix build instead of learning to compile on Windows; and
Agree changes in #31756 should make this easier to test (though I might be able to make a minimal change here to turn on multiprocess windows build).
Having #30437 or #32297 merged first would also make test coverage more meaningful because they both add functional tests for -ipcbind and -ipcconect options.
In general there is more work to do here and I hope other PRs can be merged before this one.
ryanofsky force-pushed
on May 1, 2025
DrahtBot removed the label
CI failed
on May 1, 2025
ryanofsky force-pushed
on May 2, 2025
ryanofsky
commented at 9:12 pm on May 2, 2025:
contributor
Updated 27328195136754babe8d8f5d99f4f0b6a5ab2e55 -> f215e742045401ab386f0cd67d06b358558ecf89 (pr/ipc-win.4 -> pr/ipc-win.5, compare) fixing many windows bugs.
With this update, IPC code is mostly working on windows: mpexample and mptest programs work, test_bitcoin IPC calls over socketpairs work, bitcoin-nodeechoipc command is able to create a subprocess and successfully make calls to it, and bitcoin-node-ipcbind option creates a unix socket file. Some problems remain:
This is a hang on shutdown that prevents child processes from exiting. You can kill them manually and everything works fine, but this problem needs to be debugged.
bitcoin-mine -ipcconnect seems unable to find the unix socket, failing with “Error: The system cannot find the file specified” even though the socket exists. Two test_bitcoin unix socket tests also give similar errors.
The test_bitcoin parse address tests fails because some checks are looking for / not \ separators.
ryanofsky force-pushed
on May 6, 2025
ryanofsky
commented at 3:09 pm on May 6, 2025:
contributor
Updated f215e742045401ab386f0cd67d06b358558ecf89 -> 5f272b7cc3b72fe4a59f590825b68dc2c342baca (pr/ipc-win.5 -> pr/ipc-win.6, compare) with more fixes.
With the new fixes, IPC is fully working on windows: both creating child processes and communicating over socket pairs, and listening and making connections over unix sockets. (Latter currently requires adding a SetupNetworking call to bitcoin-mine in #30437). The code changes are also mostly straightforward and clean, although I want to split commits to make them easier to review.
Will leave this PR in a draft state for now since other multiprocess PRs should have higher priority (see tracking issue #28722)
–
Rebased 13aef5ad7669e0302e27f96876615907dc98c3c3 -> cbd06846803e800f23f4498e27f930e09d260000 (pr/ipc-win.7 -> pr/ipc-win.8, compare) due to conflicts with #32345
Rebased cbd06846803e800f23f4498e27f930e09d260000 -> 3d0737720ae6bbd2c3eb4382e41fa49dd3d727d9 (pr/ipc-win.8 -> pr/ipc-win.9, compare) due to conflicts with #33517
Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
ryanofsky referenced this in commit
2975facdd1
on Apr 3, 2026
ryanofsky referenced this in commit
070e0d1cc8
on Apr 3, 2026
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-04-12 09:13 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me