Backports:
[30.x] Backports #34459
pull fanquake wants to merge 16 commits into bitcoin:30.x from fanquake:more_30_x_backports changing 18 files +148 −92-
fanquake commented at 11:55 am on January 30, 2026: member
-
19b3e2e50e
test: use ModuleNotFoundError in interface_ipc.py
Change this so we catch the case where the capnp shared libs have been updated, and can no-longer be loaded by the Python module, resulting in a skipped test, even though pycapnp is installed. i.e: ```bash stderr: Traceback (most recent call last): File "/root/ci_scratch/build/test/functional/interface_ipc.py", line 20, in <module> import capnp # type: ignore[import] # noqa: F401 ^^^^^^^^^^^^ File "/usr/local/lib64/python3.14/site-packages/capnp/__init__.py", line 36, in <module> from .version import version as __version__ File "/usr/local/lib64/python3.14/site-packages/capnp/version.py", line 1, in <module> from .lib.capnp import _CAPNP_VERSION_MAJOR as LIBCAPNP_VERSION_MAJOR # noqa: F401 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ImportError: libcapnpc.so.1.0.1: cannot open shared object file: No such file or directory ``` Failing in this way should make it clear that `pycapnp` needs to be reinstalled/rebuilt. If `pycapnp` is not installed, the test still skips as expected: ```bash Remaining jobs: [interface_ipc.py] 1/1 - interface_ipc.py skipped (capnp module not available.) TEST | STATUS | DURATION interface_ipc.py | ○ Skipped | 0 s ``` Fixes: #34016. Co-authored-by: Ryan Ofsky <ryan@ofsky.org> Github-Pull: #34409 Rebased-From: 905dfdee86d679f8ea31d841bceb77a5724a6b1b -
48749cf4c7
miniscript: correct and_v() properties
and_v() must never be 'd'. This is not a bug fix since this was unreachable in valid Miniscripts: the first sub of an and_v() must be of type V, which conflicts with (i.e. never has) property 'd'. Github-Pull: #34434 Rebased-From: 4fab35cf88c048d2784fe6d71d3f83cc4e420879
-
0a768d4a5a
fuzz: Use `__AFL_SHM_ID` for naming test directories
Use the AFL++ shared memory ID environment variable to create a deterministic datadir path. This prevents accumulation of stale directories after a fuzz iteration crashes or times out. During long fuzz campaigns, this accumulation has occasionally resulted in running out of disk space. Github-Pull: #34445 Rebased-From: d3e681bc06758fe0686cd96fcfd4a1c4c5af62b4
-
7317a0ba1f
ci: Always print low ccache hit rate notice
Github-Pull: #34453 Rebased-From: fad2876ec330dbb833905d3b2ee5753abc3bc3af
-
fanquake added this to the milestone 30.3 on Jan 30, 2026
-
DrahtBot added the label Backport on Jan 30, 2026
-
DrahtBot commented at 11:56 am on January 30, 2026: contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
Reviews
See the guideline for information on the review process.
Type Reviewers ACK willcl-ark, marcofleon If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.
LLM Linter (✨ experimental)
Possible typos and grammar issues:
- hitrate -> hit rate [Compound word “hitrate” is nonstandard; “hit rate” (or “hit-rate”) is the correct, clear phrasing]
2026-02-26 09:42:59
-
fanquake force-pushed on Feb 2, 2026
-
f5d4dc9419
ci: [refactor] Allow overwriting check option in run helper
Also, use str(e) consistently in all run helpers. This refactor does not change any behavior. This can be reviewed by checking that all instances are exactly identical code now: $ git grep --function-context 'def run(cmd' Github-Pull: #34461 Rebased-From: 2222dadabbbd03be9b4b917583fd51b34857f40c
-
fanquake force-pushed on Feb 3, 2026
-
1a757af7ea
ci: Print verbose build error message in test-each-commit
Github-Pull: #34461 Rebased-From: bbbb78a4f28fd2378342398ccae60995ae0e08d2
-
fanquake force-pushed on Feb 3, 2026
-
b7a182c749
doc: fix broken bpftrace installation link
The bpftrace project moved from iovisor/bpftrace to bpftrace/bpftraceand removed the separate INSTALL.md file. Installation instructionsare now in the README.md Quick Start section. Github-Pull: #34510 Rebased-From: 42ee31e80c99bdb4d6affdc9dc22a0f3d5da7b59
-
fanquake force-pushed on Feb 9, 2026
-
85f8d28fac
build: avoid exporting secp256k1 symbols
Take advantage of the new secp256k1 option to avoid visibility attributes on API functions. While most users of a shared libsecp always want API functions exported so that they can actually be linked against, we always build it statically. When that static lib is linked into a (static or shared) libbitcoinkernel, by default its symbols end up exported there as well. As libsecp is an implementation detail of the kernel (and any future Core lib), its symbols should never be exported. Github-Pull: #34554 Rebased-From: 2ccfdb582b646d9bda07f0f13b97cb8c37a452aa
-
fanquake force-pushed on Feb 18, 2026
-
412725b7a3
net: reduce log level for PCP/NAT-PMP NOT_AUTHORIZED failures
Users running on home networks with routers that don't support PCP (Port Control Protocol) or NAT-PMP port mapping receive frequent warning-level log messages every few minutes: "pcp: Mapping failed with result NOT_AUTHORIZED (code 2)" This is expected behavior for many consumer routers that have PCP disabled by default, not an actionable error. Add explicit constants for the NOT_AUTHORIZED result code (value 2) for both NAT-PMP and PCP protocols. Log the first NOT_AUTHORIZED failure at warning level for visibility, then downgrade subsequent occurrences to LogDebug to avoid log noise. Other failure types continue to warn unconditionally. Fixes #34114 Co-authored-by: willcl-ark <will@256k1.dev> Github-Pull: #34549 Rebased-From: afea2af1391314be0e5caaa0125c884da2405316
-
fanquake force-pushed on Feb 20, 2026
-
d54d7dfe9f
wallet: rpc: manpage: fix example missing `fee_rate` argument
The function signature for the `send` RPC is: ``` send [{"address":amount,...},{"data":"hex"},...] ( conf_target "estimate_mode" fee_rate options version ) ``` The last example in the manpage is missing the `fee_rate` arg, but is trying to specify the `options` arg, by index. The parser confuses the intended `options` arg as the missing `fee_rate` arg. See: ``` $ bitcoin-cli -rpcuser=doggman -rpcpassword=donkey -rpcport=18554 -regtest send '{"bcrt1qusm48zmlzwr32csxdw4ar7atw260h22c9ten9l": 0.1}' 1 economical '{"add_to_wallet": false, "inputs": [{"txid":"0b7e1a471dc948b7a6187936b16e6d7d9833629b2f9dd8a392eb89928f63aaad", "vout":0}]}' error code: -8 error message: Cannot specify both conf_target and fee_rate. Please provide either a confirmation target in blocks for automatic fee estimation, or an explicit fee rate. ``` vs ``` $ bitcoin-cli -rpcuser=doggman -rpcpassword=donkey -rpcport=18554 -regtest send '{"bcrt1qusm48zmlzwr32csxdw4ar7atw260h22c9ten9l": 0.1}' 1 economical null '{"add_to_wallet": false, "inputs": [{"txid":"0b7e1a471dc948b7a6187936b16e6d7d9833629b2f9dd8a392eb89928f63aaad", "vout":0}]}' { "psbt": "cHNidP8BAHECAAAAAa2qY4+SieuSo9idL5tiM5h9bW6xNnkYprdIyR1HGn4LAAAAAAD9////AkR2DwQAAAAAFgAUpLDwJu+wFRHLQAgKAb0psk7UVd2AlpgAAAAAABYAFOQ3U4t/E4cVYgZrq9H7q3K0+6lYAAAAAAABAIUCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wQC4wMA/////wLIF6gEAAAAABYAFLMY1zihXrefAA0DA5nld4MCPjkrAAAAAAAAAAAmaiSqIant4vYcP3HR3v0/qZnfo2lTdVxpBol5mWK0i+vYNpdOjPkAAAAAAQEfyBeoBAAAAAAWABSzGNc4oV63nwANAwOZ5XeDAj45KwEIawJHMEQCIElTV4pbUrsPR9qHWcioowVv3QVWHizxwevfD0u/I8YyAiBCY3OzF81PSLM00h4ueQkehYuxDFZu7Jk51iejphKnnwEhA0VKdYVSyBpWoxBwTDOupB58Fi3mEBs+u+OOqEYVd2sZACICA98YLWyH7dBCfXVxe7woiLSTgV1mJN8Zc8KgZ77pVSg+GNBMeT5UAACAAQAAgAAAAIABAAAAbAAAAAAA", "txid": "625b71b314a6ac4f738634e29dc007cd5edc0427c1ae96ab706d06a62910cea2", "hex": "02000000000101adaa638f9289eb92a3d89d2f9b6233987d6d6eb1367918a6b748c91d471a7e0b0000000000fdffffff0244760f0400000000160014a4b0f026efb01511cb40080a01bd29b24ed455dd8096980000000000160014e437538b7f13871562066babd1fbab72b4fba9580247304402204953578a5b52bb0f47da8759c8a8a3056fdd05561e2cf1c1ebdf0f4bbf23c6320220426373b317cd4f48b334d21e2e79091e858bb10c566eec9939d627a3a612a79f012103454a758552c81a56a310704c33aea41e7c162de6101b3ebbe38ea84615776b1900000000", "complete": true } ``` Github-Pull: #34561 Rebased-From: 50cf6838e6aa51e0d712cbc1e13d686253bc8fe0 -
fanquake force-pushed on Feb 25, 2026
-
6993b1be78
test: Fix broken --valgrind handling after bitcoin wrapper
Prior to this commit, tool_bitcoin.py was failing: ```sh $ ./bld-cmake/test/functional/tool_bitcoin.py --valgrind TestFramework (ERROR): Unexpected exception Traceback (most recent call last): File "./test/functional/test_framework/test_framework.py", line 138, in main self.setup() ~~~~~~~~~~^^ File "./test/functional/test_framework/test_framework.py", line 269, in setup self.setup_network() ~~~~~~~~~~~~~~~~~~^^ File "./test/functional/tool_bitcoin.py", line 38, in setup_network assert all(node.args[:len(node_argv)] == node_argv for node in self.nodes) ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError ``` This commit fixes this issue by running `bitcoin` under valgrind. Also, it comes with other improvements: * Drop the outdated valgrind 3.14 requirement, because there is no distro that ships a version that old anymore. * Drop the VALGRIND_SUPPRESSIONS_FILE env var handling, because it was presumably never used since it was introduced. Also, the use-case seems limited. Review note: The set_cmd_args was ignoring the --valgrind test option. In theory, this could be fixed by refactoring Binaries::node_argv() to be used here. However, for now, just re-implement the node_argv logic in set_cmd_args to prepend the valgrind cmd. Github-Pull: #34608 Rebased-From: fa03fbf7e31f384627230e1bc042f7f29c05ff68 -
dd8924909a
test: Remove redundant warning about missing binaries
The error was added in commit 1ea7e45a1f445d32a2b690d52befb2e63418653b, because there was an additional confusing `AssertionError: [node 0] Error: no RPC connection` instead of just a single `FileNotFoundError: [Errno 2] No such file or directory`. This is no longer needed on current master. Also, the test is incomplete, because it was just checking bitcoind and bitcoin-cli, not any other missing binaries. Also, after the previous commit, it would not work in combination with --valgrind. Instead of trying to make it complete, and work in all combinations, just remove it, because the already existing error will be clear in any case. This can be tested via: ```sh ./test/get_previous_releases.py mv releases releases_backup # Confirm the test is skipped due to missing releases ./bld-cmake/test/functional/wallet_migration.py # Confirm the test fails due to missing releases ./bld-cmake/test/functional/wallet_migration.py --previous-releases mv releases_backup releases mv ./releases/v28.2 ./releases/v28.2_backup # Confirm the test fails with a single FileNotFoundError ./bld-cmake/test/functional/wallet_migration.py mv ./releases/v28.2_backup ./releases/v28.2 # Confirm the test runs and passes ./bld-cmake/test/functional/wallet_migration.py rm ./bld-cmake/bin/bitcoind # Confirm the test fails with a single "No such file or directory", # testing with and without --valgrind ./bld-cmake/test/functional/wallet_migration.py ./bld-cmake/test/functional/wallet_migration.py --valgrind ``` Github-Pull: #34608 Rebased-From: fa29fb72cb21bec798ddae49b842c78ac84a5a3b
-
dca7700269
test: valgrind --trace-children=yes for bitcoin wrapper
Github-Pull: #34608 Rebased-From: fa5d478853a88ce7d7095b6abfe8112390298b65
-
fanquake force-pushed on Feb 25, 2026
-
2d035b1d4f
guix: use a temporary file over sponge
Remove sponge (moreutils). Github-Pull: #34627 Rebased-From: c86bce597a3c4d45f7c2b6149197d8303bda0e87
-
fanquake force-pushed on Feb 25, 2026
-
0202ae341f
doc: Update Guix install for Debian/Ubuntu
Fixes https://github.com/bitcoin/bitcoin/issues/33982 Co-authored-by: Purple Ninja <129023353+ToRyVand@users.noreply.github.com> Github-Pull: #34671 Rebased-From: faa70ca7642bd653cbd2e544c17fa58d2672afa4
-
doc: update release notes for v30.x fdaf6565a9
-
fanquake force-pushed on Feb 26, 2026
-
fanquake requested review from willcl-ark on Feb 26, 2026
-
willcl-ark approved
-
willcl-ark commented at 12:17 pm on February 26, 2026: member
ACK fdaf6565a974fb65a290618b0f3b0f5268481795
Looks ok to me. 34608 took me a minute, as the backport looks quite messy in the diff, but in reality
Binarieshad just moved fromustil.pytotest_framework.py. This affected the 3rd commit too where--trace-children=yeshad moved.Other than that all backports were clean and look correct.
-
fanquake marked this as ready for review on Feb 26, 2026
-
fanquake requested review from marcofleon on Feb 26, 2026
-
marcofleon approved
-
marcofleon commented at 5:15 pm on February 26, 2026: contributor
lgtm ACK fdaf6565a974fb65a290618b0f3b0f5268481795
#34445 looking very useful, good choice for a backport.
-
fanquake merged this on Feb 27, 2026
-
fanquake closed this on Feb 27, 2026
-
fanquake deleted the branch on Feb 27, 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-03-09 21:13 UTC
More mirrored repositories can be found on mirror.b10c.me