From 561d072e0590179f1c60bb2784077589812a05bb Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Wed, 15 Apr 2026 09:38:52 +0200 Subject: [PATCH 1/4] test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py Apply the timeout factor inside the add_block function. Also, force named args for the two expected strings. Also, add trailing comma for style. Github-Pull: #35080 Rebased-From: fa02eb87df0b4a615a3e027711326f5506e5507a --- test/functional/tool_bitcoin_chainstate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/tool_bitcoin_chainstate.py b/test/functional/tool_bitcoin_chainstate.py index 7795b20df70..cc6a2228ad2 100755 --- a/test/functional/tool_bitcoin_chainstate.py +++ b/test/functional/tool_bitcoin_chainstate.py @@ -24,9 +24,9 @@ class BitcoinChainstateTest(BitcoinTestFramework): stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - text=True + text=True, ) - stdout, stderr = proc.communicate(input=input + "\n", timeout=5) + stdout, stderr = proc.communicate(input=input + "\n", timeout=5 * self.options.timeout_factor) self.log.debug("STDOUT: {0}".format(stdout.strip("\n"))) self.log.info("STDERR: {0}".format(stderr.strip("\n"))) From 9632450ff65c1fee29c2564a6ad64dfaad4d663c Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 28 Apr 2026 18:00:36 +0000 Subject: [PATCH 2/4] multi_index: fix compilation failure with boost >= 1.91 This effectively reverts a3cb309e7c31853f272bffaa65fb6ab0a7cc4083 from PR #30194. That PR reduced the multi_index type signatures as recommended upstream, but this is no longer supported as of boost 1.91 because it is no longer necessary. 1.91 drops support for the pre-c++11 work-arounds that bloated the type signatures to begin with. The upstream `BOOST_MULTI_INDEX_ENABLE_MPL_SUPPORT` define is meant to provide compatibility with removed features, but it does not work for this case. Using `indexed_by` directly when defining the `multi_index` (as opposed to inheriting from it) works with all versions, and avoids the use of the back-compat define. This is a slight regression when building against boost < 1.91 because the bloated type signatures are reintroduced in that case, but it's not significant enough to go to the trouble of introducing version detection and ifdefs. Github-Pull: #35175 Rebased-From: 0bc9d354dfd8074d1c36a891a69b6585a8775c65 --- src/node/miner.h | 11 ++++------- src/node/txorphanage.cpp | 13 +++++++------ src/txmempool.h | 10 ++++------ src/txrequest.cpp | 12 +++++------- 4 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/node/miner.h b/src/node/miner.h index 0790835d8f1..ce9c744dcb9 100644 --- a/src/node/miner.h +++ b/src/node/miner.h @@ -109,7 +109,9 @@ struct CompareTxIterByAncestorCount { }; -struct CTxMemPoolModifiedEntry_Indices final : boost::multi_index::indexed_by< +using indexed_modified_transaction_set = boost::multi_index_container< + CTxMemPoolModifiedEntry, + boost::multi_index::indexed_by< boost::multi_index::ordered_unique< modifiedentry_iter, CompareCTxMemPoolIter @@ -122,12 +124,7 @@ struct CTxMemPoolModifiedEntry_Indices final : boost::multi_index::indexed_by< CompareTxMemPoolEntryByAncestorFee > > -{}; - -typedef boost::multi_index_container< - CTxMemPoolModifiedEntry, - CTxMemPoolModifiedEntry_Indices -> indexed_modified_transaction_set; +>; typedef indexed_modified_transaction_set::nth_index<0>::type::iterator modtxiter; typedef indexed_modified_transaction_set::index::type::iterator modtxscoreiter; diff --git a/src/node/txorphanage.cpp b/src/node/txorphanage.cpp index 164fecdc167..e9bb681b56c 100644 --- a/src/node/txorphanage.cpp +++ b/src/node/txorphanage.cpp @@ -91,12 +91,13 @@ class TxOrphanageImpl final : public TxOrphanage { } }; - struct OrphanIndices final : boost::multi_index::indexed_by< - boost::multi_index::ordered_unique, WtxidExtractor>, - boost::multi_index::ordered_unique, ByPeerViewExtractor> - >{}; - - using AnnouncementMap = boost::multi_index::multi_index_container; + using AnnouncementMap = boost::multi_index::multi_index_container< + Announcement, + boost::multi_index::indexed_by< + boost::multi_index::ordered_unique, WtxidExtractor>, + boost::multi_index::ordered_unique, ByPeerViewExtractor> + > + >; template using Iter = typename AnnouncementMap::index::type::iterator; AnnouncementMap m_orphans; diff --git a/src/txmempool.h b/src/txmempool.h index a36754810f7..befaf4e59fd 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -306,7 +306,9 @@ public: static const int ROLLING_FEE_HALFLIFE = 60 * 60 * 12; // public only for testing - struct CTxMemPoolEntry_Indices final : boost::multi_index::indexed_by< + using indexed_transaction_set = boost::multi_index_container< + CTxMemPoolEntry, + boost::multi_index::indexed_by< // sorted by txid boost::multi_index::hashed_unique, // sorted by wtxid @@ -334,11 +336,7 @@ public: CompareTxMemPoolEntryByAncestorFee > > - {}; - typedef boost::multi_index_container< - CTxMemPoolEntry, - CTxMemPoolEntry_Indices - > indexed_transaction_set; + >; /** * This mutex needs to be locked when accessing `mapTx` or other members diff --git a/src/txrequest.cpp b/src/txrequest.cpp index 4d7240bee0d..53136a8e710 100644 --- a/src/txrequest.cpp +++ b/src/txrequest.cpp @@ -208,17 +208,15 @@ struct ByTimeViewExtractor } }; -struct Announcement_Indices final : boost::multi_index::indexed_by< - boost::multi_index::ordered_unique, ByPeerViewExtractor>, - boost::multi_index::ordered_non_unique, ByTxHashViewExtractor>, - boost::multi_index::ordered_non_unique, ByTimeViewExtractor> -> -{}; /** Data type for the main data structure (Announcement objects with ByPeer/ByTxHash/ByTime indexes). */ using Index = boost::multi_index_container< Announcement, - Announcement_Indices + boost::multi_index::indexed_by< + boost::multi_index::ordered_unique, ByPeerViewExtractor>, + boost::multi_index::ordered_non_unique, ByTxHashViewExtractor>, + boost::multi_index::ordered_non_unique, ByTimeViewExtractor> + > >; /** Helper type to simplify syntax of iterator types. */ From 33d66c67ee046bc98ed446eb8a28b0f99ec9912f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc?= Date: Sun, 3 May 2026 15:36:47 +0200 Subject: [PATCH 3/4] ci: unconfine seccomp for i686 no IPC Docker 29.4.2 blocks `socketcall(2)` in the default seccomp profile: https://docs.docker.com/engine/release-notes/29/#2942 https://github.com/moby/profiles/releases/tag/seccomp%2Fv0.2.2 https://github.com/moby/moby/pull/52501 That affects the `i686, no IPC` job because it runs 32-bit Linux test binaries inside Docker. Add Docker's documented `--security-opt seccomp=unconfined` workaround to this job's `CI_CONTAINER_CAP` - the hook `ci/test/02_run_container.py` already appends to `docker run`. This restores socket availability for the 32-bit test binaries throughout the job: https://docs.docker.com/engine/security/seccomp/#run-without-the-default-seccomp-profile Github-Pull: #35202 Rebased-From: 11c9ef92a8daf030f75f88f324396b2248c65a64 --- ci/test/00_setup_env_i686_no_ipc.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/test/00_setup_env_i686_no_ipc.sh b/ci/test/00_setup_env_i686_no_ipc.sh index 4da38d9bb99..269893a5da8 100755 --- a/ci/test/00_setup_env_i686_no_ipc.sh +++ b/ci/test/00_setup_env_i686_no_ipc.sh @@ -10,6 +10,7 @@ export HOST=i686-pc-linux-gnu export CONTAINER_NAME=ci_i686_no_multiprocess export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" export CI_IMAGE_PLATFORM="linux/amd64" +export CI_CONTAINER_CAP="--security-opt seccomp=unconfined" export PACKAGES="llvm clang g++-multilib" export DEP_OPTS="DEBUG=1 NO_IPC=1" export GOAL="install" From 6c3f40117fc212b0fe60a3519cce2e0218179921 Mon Sep 17 00:00:00 2001 From: fanquake Date: Wed, 15 Apr 2026 15:22:43 +0100 Subject: [PATCH 4/4] doc: update release notes for v30.x --- doc/release-notes.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/release-notes.md b/doc/release-notes.md index 56d97cf728f..e7627fde43a 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -81,6 +81,7 @@ Notable changes - #34608 test: Fix broken --valgrind handling after bitcoin wrapper - #34690 test: Add missing timeout_factor to zmq socket - #34869 tests: applied PYTHON_GIL to the env for every test +- #35080 test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py ### Util @@ -105,6 +106,11 @@ Notable changes - #34461 ci: Print verbose build error message in test-each-commit - #34802 ci: Bump GHA actions versions - #34815 ci: bump cirruslabs actions versions +- #35202 ci: restore sockets in i686, no IPC job + +### Misc + +- #35175 multi_index: fix compilation failure with boost >= 1.91 Credits ======= @@ -113,6 +119,7 @@ Thanks to everyone who directly contributed to this release: - ANAVHEOBA - brunoerg +- Cory Fields - Daniel Pfeifer - darosior - fanquake