Skip to content

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

Open
hebasto wants to merge 4 commits into
bitcoin-core:masterfrom
hebasto:260727-ci-netbsd
Open

ci: Roll NetBSD releases to 11.0, drop 9.4#321
hebasto wants to merge 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

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.

3 participants