Skip to content

[30.x] Backports - #33609

Merged
fanquake merged 21 commits into
bitcoin:30.xfrom
fanquake:30_1_backports
Dec 2, 2025
Merged

[30.x] Backports#33609
fanquake merged 21 commits into
bitcoin:30.xfrom
fanquake:30_1_backports

Conversation

@fanquake fanquake added this to the 30.1 milestone Oct 13, 2025
@DrahtBot

DrahtBot commented Oct 13, 2025

Copy link
Copy Markdown
Contributor

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

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33609.

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:

+Use the calculation from Commonstyle and add the increased padding and
+horizontally layouted buttons to the horizontal size hint.

  • Commonstyle -> CommonStyle [proper name/camel-case; "Commonstyle" is likely a typo and may confuse readers]
  • layouted -> laid-out [incorrect past participle; "laid-out" (or "laid out") is the correct phrasing]

Possible places where named args may be used (e.g. func(x, /*named_arg=*/0) in C++, and func(x, named_arg=0) in Python):

  • std::accumulate(..., CAmount{0}) in src/node/miner.cpp
  • std::accumulate(..., CAmount{0}) in src/node/miner.cpp

2025-12-01

achow101 and others added 7 commits October 16, 2025 09:53
$FILE_ENV has a full relative path already, prepending with ci/test/
results in a non-existent path which means that DEPENDS_HASH was not
actually committing to the test's environment file.

Github-Pull: bitcoin#33581
Rebased-From: ceeb53a
When using `docker buildx build` in conjunction with the `gha` backend
cache type, it's important to specify the URL and TOKEN needed to
authenticate.

On Cirrus runners this is working with only `ACTIONS_CACHE_URL` and
`ACTIONS_RUNTIME_TOKEN`, but this is not enough for the GitHub backend.

Fix this by exporting all `ACTIONS_*` variables.

This fixes cache restore/save on forks or where GH-hosted runners are
being used.

Github-Pull: bitcoin#33508
Rebased-From: bc70695
This uses the constructors recently added upstream.

Github-Pull: bitcoin#33517
Rebased-From: 9d06822
Without this change, logging (even if unused) may account for a
substantial portion of bitcoin-node's and/or client's runtime cpu usage, due
to libmultiprocess's expensive message serialization.

This (along with some recent upstream changes) avoids the overhead by opting
out of log handling for messages that we're not interested in.

Info, Warning, and Error are logged unconditionally to match our behavior
elsewhere. See BCLog::Logger::GetCategoryLogLevel .

Github-Pull: bitcoin#33517
Rebased-From: 0626b90
@ryanofsky

Copy link
Copy Markdown
Contributor

It could make sense to backport #33229 too, I think. It does have the Needs backport (30.x) label, but doesn't appear by default because it is closed. (Sorry if this is the wrong place to discuss)

…le to distinguish these in tests

Github-Pull: bitcoin#33229
Rebased-From: 0972f55
Choose the right binary by default if an IPC option is specified

Github-Pull: bitcoin#33229
Rebased-From: 453b0fa
@waketraindev

Copy link
Copy Markdown
Contributor

Please add bitcoin-core/gui#910 , it's test coverage for bitcoin-core/gui#901

@plebhash

Copy link
Copy Markdown

please add #33676, it would be highly appreciated as a way to expedite stratum-mining/sv2-apps#81

@plebhash plebhash mentioned this pull request Nov 25, 2025
13 tasks
- This method can be used to cancel a running
  waitNext().

- This commit also adds a test case for interruptWait method

Github-Pull: bitcoin#33676
Rebased-From: dcb56fd
@plebhash

Copy link
Copy Markdown

reporting here some testing methodology and results


originally I reported #33554, which I can still reliably reproduce with branch 2025-10-06-abort-proxy-io of https://github.com/plebhash/sv2-bitcoin-core against Bitcoin Core:

  • v30.0rc3
  • v30.0

basically, the rust code runs for a little bit, and then Bitcoin Core crashes with:

Assertion failed: (m_loop), function operator->, file proxy.h, line 60.
[1]    8022 abort      ./build/bin/bitcoin-node -signet -ipcbind=unix  -debug=ipc

(plus all the backtraces reported on #33554)


on the same issue #33554 @ryanofsky said:

Just to be clear about next steps, the node aborts should be prevented by bitcoin-core/libmultiprocess#214 which is set to be backported in #33519.

this backporting was already merged... so running the same rust client from 2025-10-06-abort-proxy-io against 30.x now triggers some new behavior, where Bitcoin Core does NOT crash, and instead I see this on the rust client logs:

2025-11-29T16:09:03.869139Z  INFO logger: Sent new CoinbaseOutputConstraints
2025-11-29T16:09:03.872778Z ERROR bitcoin_core_sv2: Failed to get response: Failed: remote exception: std::exception: thread busy

(cc @ismaelsadeeq this confirms what we discussed over lunch today: if a client naively "forgets" to call interruptWait when it's supposed to, Bitcoin Core no longer crashes)


on #33554 @ryanofsky also said:

Regardless of this, the rust client code needs to be changed to either not make other IPC calls at the same time as there is an active waitNext() IPC call, or to just create more server threads and request the waitNext call to run on a different thread than the other IPC calls.

which is my segway to #33676, which is being backported here

the rust client of 2025-11-29-abort-proxy-io-interrupt-wait branch is essentially the same code of 2025-10-06-abort-proxy-io, but adapted to call interruptWait at the appropriate time, thus avoiding two concurrent waitNext requests against the same server thread

running this rust client against fanquake:30_1_backports, Bitcoin Core does NOT crash, and also we do NOT get the thread busy error on the rust client side


TLDR: #33676 successfully tested on the branch of this PR, and I'm confident we have a way forward on stratum-mining/sv2-apps#81

🙏 thanks a lot @ryanofsky @ismaelsadeeq @fanquake @Sjors

@willcl-ark

Copy link
Copy Markdown
Member

Backports all look good to me.

We are missing a release note for #33229 currently, I think it's one worth adding too.

@willcl-ark willcl-ark left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ACK b2cb203

@fanquake
fanquake requested a review from marcofleon December 1, 2025 15:48

@marcofleon marcofleon 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 b2cb203

@fanquake
fanquake merged commit 72675b8 into bitcoin:30.x Dec 2, 2025
20 checks passed
@fanquake
fanquake deleted the 30_1_backports branch December 2, 2025 10:15
This was referenced Dec 5, 2025
fanquake added a commit that referenced this pull request Dec 5, 2025
d59ebac doc: update manual pages for v30.1rc1 (fanquake)
b83d4f7 build: bump version to v30.1rc1 (fanquake)
b26c93a doc: update release notes for v30.1rc1 (fanquake)
18f3ada Remove unreliable seed from chainparams.cpp, and the associated README (SatsAndSports)
187e3b8 [test] wallet send 3 generation TRUC (glozow)
ab58b2c [wallet] never try to spend from unconfirmed TRUC that already has ancestors (glozow)
d872277 contrib: fix manpage generation (fanquake)
2256f89 contrib: rename gen-sdk to gen-sdk.py (fanquake)
5408e85 macdeploy: disable compression in macOS gen-sdk script (fanquake)
338570d contrib: more selectively pick files for macOS SDK (fanquake)

Pull request description:

  Backports:
  * #32009
  * #33528
  * #33723
  * #33996

  Prior `30.x` backports in #33609.

ACKs for top commit:
  hebasto:
    re-ACK d59ebac.
  marcofleon:
    ACK d59ebac

Tree-SHA512: 41656dc7c2e7a023325b288ff38cf95877a3c223ed5c6defc1c0939b725fb5423455583881f283aff14821bc4fea5a4d4d0ac458cab6450eb9b1bc7730fc027c
xyephy added a commit to xyephy/sv2-tp that referenced this pull request Feb 11, 2026
interruptWait() was added to Bitcoin Core v30.1 in
bitcoin/bitcoin#33609. Since v30.2 is the minimum required
version, the fallback for missing interruptWait() is no
longer needed.
morozow pushed a commit to morozow/bitcoin_rd that referenced this pull request May 8, 2026
0154900 doc: update release notes for 30.x (fanquake)
650f343 interfaces: add interruptWait method (ismaelsadeeq)
a037c66 depends: Add patch for Windows11Style plugin (Hennadii Stepanov)
7e5e787 scripted-diff: Remove obsolete comment (Hennadii Stepanov)
981e99f doc: Correct `pkgin` command usage on NetBSD (Hennadii Stepanov)
7afe601 qt: Modernize custom filtering (Hennadii Stepanov)
5595f9b ci: fix configure docker action inputs (will)
6fc65e1 ci: fix lint docker caching (will)
01e62be qt: add createwallet, createwalletdescriptor, and migratewallet to history filter (WakeTrainDev)
95c7480 miner: fix empty mempool case for waitNext() (Sjors Provoost)
9bea889 bitcoin: Make wrapper not require -m (Ryan Ofsky)
2f3363f test: add tool_bitcoin to test bitcoin wrapper behavior (Ryan Ofsky)
7bda431 init: add exe name to bitcoind, bitcoin-node -version output to be able to distinguish these in tests (Ryan Ofsky)
033a7ab [doc] correct topology requirements in submitpackage helptext (glozow)
d003069 multiprocess: align our logging with libmultiprocess's (Cory Fields)
aaab74e multiprocess: update multiprocess EventLoop construction to use options (Cory Fields)
1d176ee test: change log rate limit version gate from 299900 to 290100 (Eugene Siegel)
83f0b43 ci: expose all ACTIONS_* vars (willcl-ark)
d5a98c3 depends: Use $(package)_file_name when downloading from the fallback (Ava Chow)
d6bb84c ci: Use native platform for win-cross task (MarcoFalke)
7e9f08f ci: Properly include $FILE_ENV in DEPENDS_HASH (Ava Chow)

Pull request description:

  Backports:
  * bitcoin#33229
  * bitcoin#33508
  * bitcoin#33517
  * bitcoin#33558
  * bitcoin#33566
  * bitcoin#33580
  * bitcoin#33581
  * bitcoin#33612
  * bitcoin#33630
  * bitcoin#33676
  * bitcoin#33744
  * bitcoin#33826
  * bitcoin#33827
  * bitcoin#33906
  * bitcoin-core/gui#899
  * bitcoin-core/gui#901

ACKs for top commit:
  willcl-ark:
    ACK 0154900
  marcofleon:
    Lgtm, ACK 0154900

Tree-SHA512: cde3584c7ad9bc6034a54527c1f5e84f0c5e314520109342a5cbb3c6c703286e2bed26f2b24fbf0ba7bcc9cbc140d79921e9d63def6b5c4782fd2e208f51948a
morozow pushed a commit to morozow/bitcoin_rd that referenced this pull request May 8, 2026
afa08f9 doc: update manual pages for v30.1rc1 (fanquake)
e4c9785 build: bump version to v30.1rc1 (fanquake)
a3e1c02 doc: update release notes for v30.1rc1 (fanquake)
8ab8eb9 Remove unreliable seed from chainparams.cpp, and the associated README (SatsAndSports)
316ae54 [test] wallet send 3 generation TRUC (glozow)
349d55a [wallet] never try to spend from unconfirmed TRUC that already has ancestors (glozow)
5c38e68 contrib: fix manpage generation (fanquake)
4e7bd75 contrib: rename gen-sdk to gen-sdk.py (fanquake)
0c6e663 macdeploy: disable compression in macOS gen-sdk script (fanquake)
b66b51e contrib: more selectively pick files for macOS SDK (fanquake)

Pull request description:

  Backports:
  * bitcoin#32009
  * bitcoin#33528
  * bitcoin#33723
  * bitcoin#33996

  Prior `30.x` backports in bitcoin#33609.

ACKs for top commit:
  hebasto:
    re-ACK afa08f9.
  marcofleon:
    ACK afa08f9

Tree-SHA512: 41656dc7c2e7a023325b288ff38cf95877a3c223ed5c6defc1c0939b725fb5423455583881f283aff14821bc4fea5a4d4d0ac458cab6450eb9b1bc7730fc027c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.