Skip to content

ci: Roll NetBSD releases to 11.0, drop 9.4 - #321

Merged
ryanofsky merged 4 commits into
bitcoin-core:masterfrom
hebasto:260727-ci-netbsd
Aug 3, 2026
Merged

ci: Roll NetBSD releases to 11.0, drop 9.4#321
ryanofsky merged 4 commits into
bitcoin-core:masterfrom
hebasto:260727-ci-netbsd

Conversation

@hebasto

@hebasto hebasto commented Jul 27, 2026

Copy link
Copy Markdown
Member

No description provided.

@DrahtBot

DrahtBot commented Jul 27, 2026

Copy link
Copy Markdown

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

Reviews

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

Type Reviewers
ACK maflcko

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

@hebasto
hebasto force-pushed the 260727-ci-netbsd branch 2 times, most recently from 3afe530 to 052dd68 Compare July 27, 2026 14:18
@hebasto

hebasto commented Jul 27, 2026

Copy link
Copy Markdown
Member Author

https://github.com/bitcoin-core/libmultiprocess/actions/runs/30274461317/job/90004862019?pr=321:

Test project /home/runner/work/libmultiprocess/libmultiprocess/build-netbsd
    Start 1: mptest
1/1 Test #1: mptest ...........................***Failed    0.18 sec
[ TEST ] listen_tests.cpp:214: ListenConnections accepts incoming connections
[ PASS ] listen_tests.cpp:214: ListenConnections accepts incoming connections (5338 μs)
[ TEST ] listen_tests.cpp:224: ListenConnections enforces a local connection limit
[ PASS ] listen_tests.cpp:224: ListenConnections enforces a local connection limit (5166 μs)
[ TEST ] listen_tests.cpp:262: ListenConnections accepts multiple connections
[ PASS ] listen_tests.cpp:262: ListenConnections accepts multiple connections (4218 μs)
[ TEST ] spawn_tests.cpp:50: SpawnProcess does not run callback in child
[ PASS ] spawn_tests.cpp:50: SpawnProcess does not run callback in child (66370 μs)
[ TEST ] test.cpp:143: Call FooInterface methods
[ PASS ] test.cpp:143: Call FooInterface methods (36477 μs)
[ TEST ] test.cpp:274: Call IPC method after client connection is closed
[ PASS ] test.cpp:274: Call IPC method after client connection is closed (1379 μs)
[ TEST ] test.cpp:284: Calling IPC method after server connection is closed
[ PASS ] test.cpp:284: Calling IPC method after server connection is closed (1220 μs)
[ TEST ] test.cpp:294: Calling IPC method and disconnecting during the call
[ PASS ] test.cpp:294: Calling IPC method and disconnecting during the call (1323 μs)
[ TEST ] test.cpp:307: Calling IPC method, disconnecting and blocking during the call
[ PASS ] test.cpp:307: Calling IPC method, disconnecting and blocking during the call (3011 μs)
[ TEST ] test.cpp:349: Worker thread destroyed before it is initialized
[ PASS ] test.cpp:349: Worker thread destroyed before it is initialized (16281 μs)
[ TEST ] test.cpp:379: Calling async IPC method, with server disconnect racing the call
[ PASS ] test.cpp:379: Calling async IPC method, with server disconnect racing the call (20428 μs)
[ TEST ] test.cpp:404: Calling async IPC method, with server disconnect after cleanup
[ PASS ] test.cpp:404: Calling async IPC method, with server disconnect after cleanup (2712 μs)
[ TEST ] test.cpp:428: Destroying ProxyClient<> with destroy method after peer disconnect
terminate called after throwing an instance of 'std::runtime_error'
  what():  IPC client method called after disconnect.
*** Received signal #6: Abort trap
stack: 
0% tests passed, 1 tests failed out of 1
Total Test time (real) =   0.18 sec
The following tests FAILED:
	  1 - mptest (Failed)
Errors while running CTest

Related (?): bitcoin/bitcoin#35823

@maflcko

maflcko commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Can you share the stacktrace?

@hebasto
hebasto force-pushed the 260727-ci-netbsd branch from 052dd68 to d3af2f8 Compare July 30, 2026 16:51
@hebasto

hebasto commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

Can you share the stacktrace?

(gdb) bt
#0  0x00007eb8253b853a in ___lwp_park60 () from /usr/lib/libc.so.12
#1  0x00007eb8259b6cd0 in pthread_cond_timedwait () from /usr/lib/libpthread.so.1
#2  0x000000000043618a in operator() (__closure=0x7eb82527d028) at /home/hebasto/dev/libmultiprocess/src/mp/proxy.cpp:373
#3  0x0000000000439f52 in std::__invoke_impl<void, mp::EventLoop::startAsyncThread()::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...)
    at /usr/include/g++/bits/invoke.h:61
#4  0x0000000000439e89 in std::__invoke<mp::EventLoop::startAsyncThread()::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/g++/bits/invoke.h:96
#5  0x0000000000439d7e in std::thread::_Invoker<std::tuple<mp::EventLoop::startAsyncThread()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x7eb82527d028)
    at /usr/include/g++/bits/std_thread.h:279
#6  0x0000000000439cf4 in std::thread::_Invoker<std::tuple<mp::EventLoop::startAsyncThread()::<lambda()> > >::operator()(void) (this=0x7eb82527d028)
    at /usr/include/g++/bits/std_thread.h:286
#7  0x0000000000439c38 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<mp::EventLoop::startAsyncThread()::<lambda()> > > >::_M_run(void) (this=0x7eb82527d020)
    at /usr/include/g++/bits/std_thread.h:231
#8  0x00007eb825848c7b in execute_native_thread_routine () from /usr/lib/libstdc++.so.9
#9  0x00007eb8259b82e1 in pthread.create_tramp () from /usr/lib/libpthread.so.1
#10 0x00007eb82539dd60 in ?? () from /usr/lib/libc.so.12
#11 0x0000000000200000 in ?? ()
#12 0x0000000000000000 in ?? ()

@hebasto

hebasto commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

Apparently, until this is fixed upstream, GCC <14.x requires -DKJ_NO_EXCEPTIONS=0 whenever it processes capnproto/c++/src/kj/common.h.

On NetBSD 11.0, the default compiler is GCC 12.5, which means the devel/capnproto binary package cannot be used.

@maflcko maflcko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm ACK 278af3d

Comment thread .github/workflows/ci.yml Outdated
capnproto-cppflags: 'CPPFLAGS="-DKJ_NO_EXCEPTIONS=0"'
- release: '10.1'
# Hardcode GCC 14, since default GCC version is older
# and may not be compatible with libmultiprocess.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unrelated, as this is just move-only, but this could be explained a bit better.

I presume this is just about the c++20 features and has nothing to do with netbsd? I presume netbsd 10 ships with gcc 10?

In that case, I wonder if there should be a CI task to confirm the C++20 used here compiles with gcc 11. edit: done in #330

Also, if true, maybe the comment can instead say:

Force later GCC version, because on NetBSD 10 the default GCC 10 is too old to compile the C++ code in this repo.

@hebasto hebasto Aug 2, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I presume netbsd 10 ships with gcc 10?

Yes, It's 10.5.0.

I presume this is just about the c++20 features and has nothing to do with netbsd?

I've just built on NetBSD 10.1 using the default GCC 10.5.0 compiler.

UPDATE:

$ env CXXFLAGS="-Wpedantic" cmake -B build -G Ninja
-- The CXX compiler identification is GNU 10.5.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Performing Test HAVE_PTHREAD_GETNAME_NP
-- Performing Test HAVE_PTHREAD_GETNAME_NP - Success
-- Performing Test HAVE_PTHREAD_THREADID_NP
-- Performing Test HAVE_PTHREAD_THREADID_NP - Failed
-- Performing Test HAVE_PTHREAD_GETTHREADID_NP
-- Performing Test HAVE_PTHREAD_GETTHREADID_NP - Failed
-- Configuring done (0.9s)
-- Generating done (0.0s)
-- Build files have been written to: /home/hebasto/dev/libmultiprocess/build
$ cmake --build build
[6/7] Building CXX object CMakeFiles/multiprocess.dir/src/mp/proxy.cpp.o
In file included from /home/hebasto/dev/libmultiprocess/src/mp/proxy.cpp:8:
/home/hebasto/dev/libmultiprocess/include/mp/proxy-types.h:630:2: warning: extra ';' [-Wpedantic]
  630 | };
      |  ^
[7/7] Linking CXX static library libmultiprocess.a

Comment thread .github/workflows/ci.yml Outdated
hebasto added 4 commits August 2, 2026 20:49
NetBSD 9.x will become unsupported once release 11.0 is released.
Also document a workaround for a bug in Cap'n Proto affecting compilers
prior to GCC 14.
@hebasto

hebasto commented Aug 2, 2026

Copy link
Copy Markdown
Member Author

@maflcko

Thank you for your feedback. I reworked this PR and switched all NetBSD jobs to the system's default compilers.

@maflcko

maflcko commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

lgtm ACK a9e70db

@ryanofsky

Copy link
Copy Markdown
Collaborator

I'm very confused by this PR. There is no description. The first comment is a link to a failing CI job with no context and link to a Bitcoin bug. Then there is a request for a stack trace, then a stack trace, and then discussion GCC versions and and c++20 features. Unclear what the CI failure and stack trace have to do with KJ_NO_EXCEPTIONS.

The code changes here seem fine. It does seem good to drop netbsd 9.4, add netbsd 11.0, stop hardcoding GCC 14, drop unneeded semicolons, and use -DKJ_NO_EXCEPTIONS=0 to work around capnproto/capnproto#2756.

But it would be really helpful if PR had a description and commit messages that said what the motivation for the individual changes to make this less confusing and make understanding these change possible in the future

Comment thread .github/workflows/ci.yml
# See https://github.com/capnproto/capnproto/pull/2756/changes/28fa1a6753514d8de56875ec2222fa0e1c3a04f7.
- release: 10.1
capnproto-cppflags: 'CPPFLAGS="-DKJ_NO_EXCEPTIONS=0"'
env_vars: 'CXXFLAGS="-DKJ_NO_EXCEPTIONS=0"'

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In commit "ci: Switch to default compiler on NetBSD 9.4" (2d33b14)

I was confused by inconsistency here between CPPFLAGS and CXXFLAGS but apparently this is needed because cmake ignores uses CXXFLAGS and ignores CPPFLAGS

Comment thread .github/workflows/ci.yml
# Test all supported releases.
# See https://www.netbsd.org/releases/.
include:
# Due to a bug in Cap'n Proto, GCC compilers older

@ryanofsky ryanofsky Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In commit "ci: Switch to default compiler on NetBSD 9.4" (2d33b14)

It'd be nice if commit message said what motivation was for this change. It seems like this is switching to an older compiler and adding a workaround only needed in the older compiler. Unclear why this is better than just using the newer compiler.

EDIT: Looking at next commit, reason for doing this seems to be newer netbsd version added in next commit that maybe doesn't support GCC 14, or maybe defaults to a newer version that would be preferred for wider coverage?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I presume the rationale is that the default compiler is more likely used (by default), so documenting the workaround for it seems fine.

However, using GCC 14, or anything else, will work equally as a workaround and seems fine as well.

@ryanofsky
ryanofsky merged commit 879efea into bitcoin-core:master Aug 3, 2026
13 checks passed
@hebasto
hebasto deleted the 260727-ci-netbsd branch August 4, 2026 08:07
Sjors added a commit to Sjors/sv2-tp that referenced this pull request Aug 20, 2026
d0eea62c58 ci: add Windows cross-compilation config using MinGW and Wine
ae6cf017d4 test: Add TCP SocketListener and Windows compat to socketlistener.h
1938c199d7 util: make pthreads optional on Windows to enable MSVC builds
97011d4008 util: Fix Windows SpawnProcess hang when child exits before connecting to named pipe
7861351f24 util: Add Windows support
ee09c2b269 util: Add Windows CommandLineFromArgv escaping function
860e2ffb5c util, test: guard Unix-only code for Windows build
c79b49afe1 util, test: Replace UnixListener with SocketListener
15aa914f03 util, test: Add CloseSocket, use SocketId
be5f87655a util: Improve SpawnProcess API and documentation
390b5f901f Merge bitcoin-core/libmultiprocess#344: test: listen_tests and connect_tests follow-ups
e18ca520f4 Merge bitcoin-core/libmultiprocess#343: test: fix race in connect_tests disconnect-deferred-failure test
c39c7850c6 doc: note construct() call in valid init interface test
b9c36c6175 test: close sockets unconditionally and check errors with KJ_SYSCALL
7eb741e635 test: drop unnecessary KJ_EXPECT(true)
113f1d4d28 test: join server thread unconditionally in connect tests
44bc4630bc test: drop mp:: prefixes in connect tests
038d33eb31 test: share DefaultLogHandler between test files
b54a163308 test: drop TestSetup socket members in connect tests
70467c5a72 test: add m_ prefix to TestSetup members in connect tests
cc260f2526 test: replace capnp fix link with upstream PR
137a6e4e03 test: fix race in connect_tests disconnect-deferred-failure test
8dab0d4bde Merge bitcoin-core/libmultiprocess#341: ci: add -Wextra-semi to llvm config
b3b134eed8 ci: add -Wextra-semi to llvm config
bdd0cd6941 Merge bitcoin-core/libmultiprocess#339: refactor: add `[[noreturn]]` attributes
a779a09764 ci: add -Wmissing-noreturn
636aaff576 refactor: add missing [[noreturn]] attributes
cc11c2b1b4 Merge bitcoin-core/libmultiprocess#338: test: check ReadList return value
2d6e863c77 Merge bitcoin-core/libmultiprocess#334: ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallelism by default
d4d10ff98a Merge bitcoin-core/libmultiprocess#332: ci: add -Wextra-semi to default config
b540e70f25 Merge bitcoin-core/libmultiprocess#324: proxy: Name threads spawned by the event loop
e5e367e785 Merge bitcoin-core/libmultiprocess#312: util: report back child errors to parent and throw
2220df68c9 Merge bitcoin-core/libmultiprocess#298: Fix error handling when creating clients (`mp::ConnectStream`)
51defb79ef Merge bitcoin-core/libmultiprocess#340: ci: Update `capnproto` prerequisites on NetBSD
7e94790b08 ci: Update `capnproto` prerequisites on NetBSD
9f25ffca5b test: Cover OS thread names for worker, pool, and async threads
648a18589c proxy: Name threads spawned by the event loop
49834b2609 ci: add -Wextra-semi to default config
fae9a637e3 example: Remove unused kj/async.h include
bb473690c9 Fix error handling when creating clients
44d191420c Add test coverage for ConnectStream
231361ae5a Correct stale UnixListener doc comment
060c1a50d0 Extract `UnixListener` class to a dedicated file
62f25af06c test: check ReadList return value
ce51d73725 ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallism in build jobs by default
67302cd132 Merge bitcoin-core/libmultiprocess#331: Remove code for Cap'n Proto versions before 0.9
f13c64ab54 Merge bitcoin-core/libmultiprocess#330: ci: Compile with minimum supported g++ in olddeps
8e026f6625 Merge bitcoin-core/libmultiprocess#327: build: avoid unnecessary capnp-rpc dependency for mpgen
e5206e9eb5 Merge bitcoin-core/libmultiprocess#325: cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
879efea2bc Merge bitcoin-core/libmultiprocess#321: ci: Roll NetBSD releases to 11.0, drop 9.4
abf127a314 Merge bitcoin-core/libmultiprocess#317: ipc: Fix mpgen capnp tool path for vcpkg/Windows builds
c437d7f107 Merge bitcoin-core/libmultiprocess#310: test: cover immediate client disconnects for `ListenConnections`
31bff8a673 Merge bitcoin-core/libmultiprocess#307: refactor: memcpy -> std::ranges::copy
f355108b0a Merge bitcoin-core/libmultiprocess#303: type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
2d678177c1 Merge bitcoin-core/libmultiprocess#296: ci: Bump channel to nixos-26.05
3f05b11624 util: kill and reap child on SpawnProcess error
4a56c1837a util: report back child error to parent and throw
a9e70dbe77 ci: Add NetBSD release 11.0
2d33b14fb0 ci: Switch to default compiler on NetBSD 9.4
36f7400277 ci: Drop NetBSD release 9.4
bd508311b5 refactor: Drop stray semicolons after function definitions
788f17a850 Remove code for Cap'n Proto versions before 0.9
7402affd0c ci: Pin oldeps config to older nixpkgs channel to compile older cmake with older gcc
edf6343562 ci: Compile with minimum supported g++-11 in olddeps
fa47449afe cmake: avoid unnecessary capnp-rpc dependency for mpgen
a494b764de cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
26452e02d7 refactor: memcpy -> std::ranges::copy
e1dcc6eb18 Merge bitcoin-core/libmultiprocess#316: cmake: Fix stale codegen when mpgen binary changes
7a72df02e2 type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
45b685c3f5 type-number, type-chrono: Fix static assert signed/unsigned comparisons
45f6255975 type-number: exclude bool from the integral overload
8d6d464948 Merge bitcoin-core/libmultiprocess#315: Fix startup race in example
a6fc80d254 Merge bitcoin-core/libmultiprocess#311: bugfix: clear FD_CLOEXEC in child instead of parent before fork
496fb84e69 test: cover immediate client disconnects for `ListenConnections`
36c6c63520 doc: Document reference-counted EventLoop lifetime
3a997e113c Fix startup race in mpexample
f5c15ce33f Merge bitcoin-core/libmultiprocess#323: refactor: access ThreadContext through CurrentThread(), ci: switch Bitcoin Core to master
66298c737f ci: Switch back to Bitcoin Core's master branch
86b4810501 refactor: access ThreadContext through CurrentThread()
eea9c64f6e cmake: Fix stale codegen when mpgen binary changes
a26a08496b cmake: Fix mpgen capnp tool path for vcpkg/Windows builds
140d9ba6ff test: allow custom log handler in `ListenSetup`
1e0c7ff9a5 util: Clear FD_CLOEXEC in child instead of parent before fork
8550ee6a31 util, refactor: Add ChildFail helper for post-fork child errors
17eab90b52 test: Fix typo in listen_tests.cpp
ce865a9ba8 refactor: Directly use value in CustomBuildField
3f221b5bfd Merge bitcoin-core/libmultiprocess#274: Add nonunix platform support
1b0f605606 doc: Remove trailing whitespace
d8f8ca3119 ipc: Wrap mpgen main() in try-catch to print errors
fbe5a14ad4 ci: Check out bitcoin/bitcoin PR #35084 instead of master
39d3690d83 types: Replace SFINAE with requires clauses to avoid MSVC C2039 error
ba68520203 proxy, refactor: Fix C4305 truncation warning in Accessor on MSVC
1d81d47811 util, refactor: Fix PtrOrValue constructor for move-only types on MSVC
b883fe1e52 proxy: Fix shutdownWrite() exception handling on macOS with dynamic libraries
0012411ccc proxy: Call shutdownWrite() in Connection destructor
38312ad191 proxy, refactor: Change ConnectStream and ServeStream to accept stream objects
e96d5d742a proxy, refactor: Replace EventLoop wakeup fd integers with KJ stream objects
db4f9a3d73 cmake: Bump minimum required Cap'n Proto version to 0.9
652934fb79 util, refactor: Add SocketPair() and use it in SpawnProcess
1c6ef7a26c util, refactor: Do not fork() and exec() separately
1389cf3132 util, refactor: Add SpawnConnectInfo type alias and use it
c7ca1f00b6 util, refactor: Add SocketId type alias and use it
be46a35203 util, refactor: Add ProcessId type alias and use it
91a78db780 doc: Bump version 13 > 14
fa2c56ec27 ci: Bump channel to nixos-26.05

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: d0eea62c58928f9660b8dc5541a62ea395c565ef
Sjors added a commit to Sjors/sv2-tp that referenced this pull request Aug 20, 2026
d0eea62c58 ci: add Windows cross-compilation config using MinGW and Wine
ae6cf017d4 test: Add TCP SocketListener and Windows compat to socketlistener.h
1938c199d7 util: make pthreads optional on Windows to enable MSVC builds
97011d4008 util: Fix Windows SpawnProcess hang when child exits before connecting to named pipe
7861351f24 util: Add Windows support
ee09c2b269 util: Add Windows CommandLineFromArgv escaping function
860e2ffb5c util, test: guard Unix-only code for Windows build
c79b49afe1 util, test: Replace UnixListener with SocketListener
15aa914f03 util, test: Add CloseSocket, use SocketId
be5f87655a util: Improve SpawnProcess API and documentation
390b5f901f Merge bitcoin-core/libmultiprocess#344: test: listen_tests and connect_tests follow-ups
e18ca520f4 Merge bitcoin-core/libmultiprocess#343: test: fix race in connect_tests disconnect-deferred-failure test
c39c7850c6 doc: note construct() call in valid init interface test
b9c36c6175 test: close sockets unconditionally and check errors with KJ_SYSCALL
7eb741e635 test: drop unnecessary KJ_EXPECT(true)
113f1d4d28 test: join server thread unconditionally in connect tests
44bc4630bc test: drop mp:: prefixes in connect tests
038d33eb31 test: share DefaultLogHandler between test files
b54a163308 test: drop TestSetup socket members in connect tests
70467c5a72 test: add m_ prefix to TestSetup members in connect tests
cc260f2526 test: replace capnp fix link with upstream PR
137a6e4e03 test: fix race in connect_tests disconnect-deferred-failure test
8dab0d4bde Merge bitcoin-core/libmultiprocess#341: ci: add -Wextra-semi to llvm config
b3b134eed8 ci: add -Wextra-semi to llvm config
bdd0cd6941 Merge bitcoin-core/libmultiprocess#339: refactor: add `[[noreturn]]` attributes
a779a09764 ci: add -Wmissing-noreturn
636aaff576 refactor: add missing [[noreturn]] attributes
cc11c2b1b4 Merge bitcoin-core/libmultiprocess#338: test: check ReadList return value
2d6e863c77 Merge bitcoin-core/libmultiprocess#334: ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallelism by default
d4d10ff98a Merge bitcoin-core/libmultiprocess#332: ci: add -Wextra-semi to default config
b540e70f25 Merge bitcoin-core/libmultiprocess#324: proxy: Name threads spawned by the event loop
e5e367e785 Merge bitcoin-core/libmultiprocess#312: util: report back child errors to parent and throw
2220df68c9 Merge bitcoin-core/libmultiprocess#298: Fix error handling when creating clients (`mp::ConnectStream`)
51defb79ef Merge bitcoin-core/libmultiprocess#340: ci: Update `capnproto` prerequisites on NetBSD
7e94790b08 ci: Update `capnproto` prerequisites on NetBSD
9f25ffca5b test: Cover OS thread names for worker, pool, and async threads
648a18589c proxy: Name threads spawned by the event loop
49834b2609 ci: add -Wextra-semi to default config
fae9a637e3 example: Remove unused kj/async.h include
bb473690c9 Fix error handling when creating clients
44d191420c Add test coverage for ConnectStream
231361ae5a Correct stale UnixListener doc comment
060c1a50d0 Extract `UnixListener` class to a dedicated file
62f25af06c test: check ReadList return value
ce51d73725 ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallism in build jobs by default
67302cd132 Merge bitcoin-core/libmultiprocess#331: Remove code for Cap'n Proto versions before 0.9
f13c64ab54 Merge bitcoin-core/libmultiprocess#330: ci: Compile with minimum supported g++ in olddeps
8e026f6625 Merge bitcoin-core/libmultiprocess#327: build: avoid unnecessary capnp-rpc dependency for mpgen
e5206e9eb5 Merge bitcoin-core/libmultiprocess#325: cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
879efea2bc Merge bitcoin-core/libmultiprocess#321: ci: Roll NetBSD releases to 11.0, drop 9.4
abf127a314 Merge bitcoin-core/libmultiprocess#317: ipc: Fix mpgen capnp tool path for vcpkg/Windows builds
c437d7f107 Merge bitcoin-core/libmultiprocess#310: test: cover immediate client disconnects for `ListenConnections`
31bff8a673 Merge bitcoin-core/libmultiprocess#307: refactor: memcpy -> std::ranges::copy
f355108b0a Merge bitcoin-core/libmultiprocess#303: type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
2d678177c1 Merge bitcoin-core/libmultiprocess#296: ci: Bump channel to nixos-26.05
3f05b11624 util: kill and reap child on SpawnProcess error
4a56c1837a util: report back child error to parent and throw
a9e70dbe77 ci: Add NetBSD release 11.0
2d33b14fb0 ci: Switch to default compiler on NetBSD 9.4
36f7400277 ci: Drop NetBSD release 9.4
bd508311b5 refactor: Drop stray semicolons after function definitions
788f17a850 Remove code for Cap'n Proto versions before 0.9
7402affd0c ci: Pin oldeps config to older nixpkgs channel to compile older cmake with older gcc
edf6343562 ci: Compile with minimum supported g++-11 in olddeps
fa47449afe cmake: avoid unnecessary capnp-rpc dependency for mpgen
a494b764de cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
26452e02d7 refactor: memcpy -> std::ranges::copy
e1dcc6eb18 Merge bitcoin-core/libmultiprocess#316: cmake: Fix stale codegen when mpgen binary changes
7a72df02e2 type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
45b685c3f5 type-number, type-chrono: Fix static assert signed/unsigned comparisons
45f6255975 type-number: exclude bool from the integral overload
8d6d464948 Merge bitcoin-core/libmultiprocess#315: Fix startup race in example
a6fc80d254 Merge bitcoin-core/libmultiprocess#311: bugfix: clear FD_CLOEXEC in child instead of parent before fork
496fb84e69 test: cover immediate client disconnects for `ListenConnections`
36c6c63520 doc: Document reference-counted EventLoop lifetime
3a997e113c Fix startup race in mpexample
f5c15ce33f Merge bitcoin-core/libmultiprocess#323: refactor: access ThreadContext through CurrentThread(), ci: switch Bitcoin Core to master
66298c737f ci: Switch back to Bitcoin Core's master branch
86b4810501 refactor: access ThreadContext through CurrentThread()
eea9c64f6e cmake: Fix stale codegen when mpgen binary changes
a26a08496b cmake: Fix mpgen capnp tool path for vcpkg/Windows builds
140d9ba6ff test: allow custom log handler in `ListenSetup`
1e0c7ff9a5 util: Clear FD_CLOEXEC in child instead of parent before fork
8550ee6a31 util, refactor: Add ChildFail helper for post-fork child errors
17eab90b52 test: Fix typo in listen_tests.cpp
ce865a9ba8 refactor: Directly use value in CustomBuildField
3f221b5bfd Merge bitcoin-core/libmultiprocess#274: Add nonunix platform support
1b0f605606 doc: Remove trailing whitespace
d8f8ca3119 ipc: Wrap mpgen main() in try-catch to print errors
fbe5a14ad4 ci: Check out bitcoin/bitcoin PR #35084 instead of master
39d3690d83 types: Replace SFINAE with requires clauses to avoid MSVC C2039 error
ba68520203 proxy, refactor: Fix C4305 truncation warning in Accessor on MSVC
1d81d47811 util, refactor: Fix PtrOrValue constructor for move-only types on MSVC
b883fe1e52 proxy: Fix shutdownWrite() exception handling on macOS with dynamic libraries
0012411ccc proxy: Call shutdownWrite() in Connection destructor
38312ad191 proxy, refactor: Change ConnectStream and ServeStream to accept stream objects
e96d5d742a proxy, refactor: Replace EventLoop wakeup fd integers with KJ stream objects
db4f9a3d73 cmake: Bump minimum required Cap'n Proto version to 0.9
652934fb79 util, refactor: Add SocketPair() and use it in SpawnProcess
1c6ef7a26c util, refactor: Do not fork() and exec() separately
1389cf3132 util, refactor: Add SpawnConnectInfo type alias and use it
c7ca1f00b6 util, refactor: Add SocketId type alias and use it
be46a35203 util, refactor: Add ProcessId type alias and use it
91a78db780 doc: Bump version 13 > 14
fa2c56ec27 ci: Bump channel to nixos-26.05

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: d0eea62c58928f9660b8dc5541a62ea395c565ef
Sjors added a commit to Sjors/sv2-tp that referenced this pull request Aug 21, 2026
d0eea62c58 ci: add Windows cross-compilation config using MinGW and Wine
ae6cf017d4 test: Add TCP SocketListener and Windows compat to socketlistener.h
1938c199d7 util: make pthreads optional on Windows to enable MSVC builds
97011d4008 util: Fix Windows SpawnProcess hang when child exits before connecting to named pipe
7861351f24 util: Add Windows support
ee09c2b269 util: Add Windows CommandLineFromArgv escaping function
860e2ffb5c util, test: guard Unix-only code for Windows build
c79b49afe1 util, test: Replace UnixListener with SocketListener
15aa914f03 util, test: Add CloseSocket, use SocketId
be5f87655a util: Improve SpawnProcess API and documentation
390b5f901f Merge bitcoin-core/libmultiprocess#344: test: listen_tests and connect_tests follow-ups
e18ca520f4 Merge bitcoin-core/libmultiprocess#343: test: fix race in connect_tests disconnect-deferred-failure test
c39c7850c6 doc: note construct() call in valid init interface test
b9c36c6175 test: close sockets unconditionally and check errors with KJ_SYSCALL
7eb741e635 test: drop unnecessary KJ_EXPECT(true)
113f1d4d28 test: join server thread unconditionally in connect tests
44bc4630bc test: drop mp:: prefixes in connect tests
038d33eb31 test: share DefaultLogHandler between test files
b54a163308 test: drop TestSetup socket members in connect tests
70467c5a72 test: add m_ prefix to TestSetup members in connect tests
cc260f2526 test: replace capnp fix link with upstream PR
137a6e4e03 test: fix race in connect_tests disconnect-deferred-failure test
8dab0d4bde Merge bitcoin-core/libmultiprocess#341: ci: add -Wextra-semi to llvm config
b3b134eed8 ci: add -Wextra-semi to llvm config
bdd0cd6941 Merge bitcoin-core/libmultiprocess#339: refactor: add `[[noreturn]]` attributes
a779a09764 ci: add -Wmissing-noreturn
636aaff576 refactor: add missing [[noreturn]] attributes
cc11c2b1b4 Merge bitcoin-core/libmultiprocess#338: test: check ReadList return value
2d6e863c77 Merge bitcoin-core/libmultiprocess#334: ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallelism by default
d4d10ff98a Merge bitcoin-core/libmultiprocess#332: ci: add -Wextra-semi to default config
b540e70f25 Merge bitcoin-core/libmultiprocess#324: proxy: Name threads spawned by the event loop
e5e367e785 Merge bitcoin-core/libmultiprocess#312: util: report back child errors to parent and throw
2220df68c9 Merge bitcoin-core/libmultiprocess#298: Fix error handling when creating clients (`mp::ConnectStream`)
51defb79ef Merge bitcoin-core/libmultiprocess#340: ci: Update `capnproto` prerequisites on NetBSD
7e94790b08 ci: Update `capnproto` prerequisites on NetBSD
9f25ffca5b test: Cover OS thread names for worker, pool, and async threads
648a18589c proxy: Name threads spawned by the event loop
49834b2609 ci: add -Wextra-semi to default config
fae9a637e3 example: Remove unused kj/async.h include
bb473690c9 Fix error handling when creating clients
44d191420c Add test coverage for ConnectStream
231361ae5a Correct stale UnixListener doc comment
060c1a50d0 Extract `UnixListener` class to a dedicated file
62f25af06c test: check ReadList return value
ce51d73725 ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallism in build jobs by default
67302cd132 Merge bitcoin-core/libmultiprocess#331: Remove code for Cap'n Proto versions before 0.9
f13c64ab54 Merge bitcoin-core/libmultiprocess#330: ci: Compile with minimum supported g++ in olddeps
8e026f6625 Merge bitcoin-core/libmultiprocess#327: build: avoid unnecessary capnp-rpc dependency for mpgen
e5206e9eb5 Merge bitcoin-core/libmultiprocess#325: cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
879efea2bc Merge bitcoin-core/libmultiprocess#321: ci: Roll NetBSD releases to 11.0, drop 9.4
abf127a314 Merge bitcoin-core/libmultiprocess#317: ipc: Fix mpgen capnp tool path for vcpkg/Windows builds
c437d7f107 Merge bitcoin-core/libmultiprocess#310: test: cover immediate client disconnects for `ListenConnections`
31bff8a673 Merge bitcoin-core/libmultiprocess#307: refactor: memcpy -> std::ranges::copy
f355108b0a Merge bitcoin-core/libmultiprocess#303: type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
2d678177c1 Merge bitcoin-core/libmultiprocess#296: ci: Bump channel to nixos-26.05
3f05b11624 util: kill and reap child on SpawnProcess error
4a56c1837a util: report back child error to parent and throw
a9e70dbe77 ci: Add NetBSD release 11.0
2d33b14fb0 ci: Switch to default compiler on NetBSD 9.4
36f7400277 ci: Drop NetBSD release 9.4
bd508311b5 refactor: Drop stray semicolons after function definitions
788f17a850 Remove code for Cap'n Proto versions before 0.9
7402affd0c ci: Pin oldeps config to older nixpkgs channel to compile older cmake with older gcc
edf6343562 ci: Compile with minimum supported g++-11 in olddeps
fa47449afe cmake: avoid unnecessary capnp-rpc dependency for mpgen
a494b764de cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
26452e02d7 refactor: memcpy -> std::ranges::copy
e1dcc6eb18 Merge bitcoin-core/libmultiprocess#316: cmake: Fix stale codegen when mpgen binary changes
7a72df02e2 type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
45b685c3f5 type-number, type-chrono: Fix static assert signed/unsigned comparisons
45f6255975 type-number: exclude bool from the integral overload
8d6d464948 Merge bitcoin-core/libmultiprocess#315: Fix startup race in example
a6fc80d254 Merge bitcoin-core/libmultiprocess#311: bugfix: clear FD_CLOEXEC in child instead of parent before fork
496fb84e69 test: cover immediate client disconnects for `ListenConnections`
36c6c63520 doc: Document reference-counted EventLoop lifetime
3a997e113c Fix startup race in mpexample
f5c15ce33f Merge bitcoin-core/libmultiprocess#323: refactor: access ThreadContext through CurrentThread(), ci: switch Bitcoin Core to master
66298c737f ci: Switch back to Bitcoin Core's master branch
86b4810501 refactor: access ThreadContext through CurrentThread()
eea9c64f6e cmake: Fix stale codegen when mpgen binary changes
a26a08496b cmake: Fix mpgen capnp tool path for vcpkg/Windows builds
140d9ba6ff test: allow custom log handler in `ListenSetup`
1e0c7ff9a5 util: Clear FD_CLOEXEC in child instead of parent before fork
8550ee6a31 util, refactor: Add ChildFail helper for post-fork child errors
17eab90b52 test: Fix typo in listen_tests.cpp
ce865a9ba8 refactor: Directly use value in CustomBuildField
3f221b5bfd Merge bitcoin-core/libmultiprocess#274: Add nonunix platform support
1b0f605606 doc: Remove trailing whitespace
d8f8ca3119 ipc: Wrap mpgen main() in try-catch to print errors
fbe5a14ad4 ci: Check out bitcoin/bitcoin PR #35084 instead of master
39d3690d83 types: Replace SFINAE with requires clauses to avoid MSVC C2039 error
ba68520203 proxy, refactor: Fix C4305 truncation warning in Accessor on MSVC
1d81d47811 util, refactor: Fix PtrOrValue constructor for move-only types on MSVC
b883fe1e52 proxy: Fix shutdownWrite() exception handling on macOS with dynamic libraries
0012411ccc proxy: Call shutdownWrite() in Connection destructor
38312ad191 proxy, refactor: Change ConnectStream and ServeStream to accept stream objects
e96d5d742a proxy, refactor: Replace EventLoop wakeup fd integers with KJ stream objects
db4f9a3d73 cmake: Bump minimum required Cap'n Proto version to 0.9
652934fb79 util, refactor: Add SocketPair() and use it in SpawnProcess
1c6ef7a26c util, refactor: Do not fork() and exec() separately
1389cf3132 util, refactor: Add SpawnConnectInfo type alias and use it
c7ca1f00b6 util, refactor: Add SocketId type alias and use it
be46a35203 util, refactor: Add ProcessId type alias and use it
91a78db780 doc: Bump version 13 > 14
fa2c56ec27 ci: Bump channel to nixos-26.05

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: d0eea62c58928f9660b8dc5541a62ea395c565ef
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants