Skip to content

backport: v0.26 bitcoin#28060, bitcoin#28090, bitcoin#28108, bitcoin#28204 - #62

Merged
DCG-Claude merged 4 commits into
developfrom
backport-0.26-b052-misc
Sep 23, 2026
Merged

DCG-Claude merged 4 commits into
developfrom
backport-0.26-b052-misc

Conversation

@DCG-Claude

Copy link
Copy Markdown
Collaborator

Automated Bitcoin Core v0.26 backports, batch backport-0.26-b052-misc.

upstream commit gates notes
bitcoin#28060 bb3cec055c pick:pass build:pass tests:pass mech:pass verify:pass The Dash commit reproduces bitcoin#28060 exactly: util::Xor extraction with key_offset, the modernized AutoFile
bitcoin#28090 6bb207f092 pick:pass build:pass tests:pass mech:pass verify:pass Both upstream hunks land verbatim: modernize-use-noexcept is enabled in src/.clang-tidy and StopHashingException::what()
bitcoin#28108 25b82a3488 pick:pass build:pass tests:pass mech:pass verify:pass The Dash commit reproduces bitcoin#28108 exactly: the single upstream hunk in test/functional/wallet_resendwalle
bitcoin#28204 e850907174 pick:pass build:pass tests:pass mech:pass verify:pass The Dash commit faithfully applies the sole upstream change from bitcoin#28204, replacing the `with sqlite3.conn

Failed gates (not included):

Provenance

Each commit passed: cherry-pick (adapted by an Opus lane only where conflicts existed), build, touched tests, a mechanical diff-of-diffs check (every upstream hunk landed; no added line without an upstream counterpart), and an independent Opus verification lane where anything was adapted. Gate rows and lane artifacts are in the backportsys DB.

fa633aa streams: Teach AutoFile how to XOR (MarcoFalke)
000019e Add AutoFile::detail_fread member function (MarcoFalke)
fa7724b refactor: Modernize AutoFile (MarcoFalke)
fa8d227 doc: Remove comments that just repeat what the code does (MarcoFalke)
fafe2ca refactor: Remove redundant file check from AutoFile shift operators (MarcoFalke)
9999a49 Extract util::Xor, Add key_offset option, Add bench (MarcoFalke)

Pull request description:

  This allows `AutoFile` to roll an XOR pattern while reading or writing to the underlying file.

  This is needed for bitcoin#28052, but can also be used in any other place.

  Also, there are tests, so I've split this up from the larger pull to make review easier, hopefully.

ACKs for top commit:
  Crypt-iQ:
    crACK fa633aa
  willcl-ark:
    Lightly tested ACK fa633aa
  jamesob:
    reACK fa633aa ([`jamesob/ackr/28060.4.MarcoFalke.util_add_xorfile`](https://github.com/jamesob/bitcoin/tree/ackr/28060.4.MarcoFalke.util_add_xorfile))

Tree-SHA512: 6d66cad0a089a096d3f95e4f2b28bce80b349d4b76f53d09dc9a0bea4fc1b7c0652724469c37971ba27728c7d46398a4c1d289c252af4c0f83bb2fcbc6f8e90b

Dash adaptations:
- libbitcoin_util_a_SOURCES: kept Dash's stacktraces.cpp and added upstream's streams.cpp after it (alphabetical order preserved)
- libbitcoin_kernel_a_SOURCES: kept Dash's shutdown.cpp and spork.cpp, added upstream's streams.cpp after them; upstream's adjacent signet.cpp context line dropped since Dash has no signet.cpp
…hrow()

047daad clang-tidy: turn on modernize-use-noexcept (fanquake)
85e9e1f validation: use noexcept instead of deprecated throw() (fanquake)

Pull request description:

  We fixed this once before in bitcoin#10965.
  Turn on https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-noexcept.html#modernize-use-noexcept.

ACKs for top commit:
  MarcoFalke:
    lgtm ACK 047daad
  sipa:
    utACK 047daad
  Empact:
    utACK bitcoin@047daad
  stickies-v:
    ACK 047daad

Tree-SHA512: 949b0fe598d66583747853094db13f196b402000e601f8634e5a708b55454d29c5aa18eaf1f2420d3ccf10e3e524b7414ff3a6fe4cb431420bf749c22b2b8bab

Dash adaptations:
- src/.clang-tidy: kept Dash-only 'modernize-use-emplace' check alongside the upstream-added 'modernize-use-noexcept', preserving alphabetical order (default-member-init, use-emplace, use-noexcept, use-nullptr)
…allettransactions.py

e667bd6 test: fix intermittent failure in wallet_resendwallettransactions.py (Martin Zumsande)

Pull request description:

  Fixes bitcoin#28094

  The test bumps the mocktime for ~2 weeks and then triggers eviction from the mempool. But this bump will also cause a new resubmit, and if the timing is such that this resubmit happens right after the eviction and before the check that the tx was evicted, the test can fail as in bitcoin#28094:

  ```
  node0 2023-07-17T21:31:23.809483Z (mocktime: 2023-08-02T09:46:27Z) [httpworker.1] [validation.cpp:267] [LimitMempoolSize] [mempool] Expired 2 transactions from the memory pool
  node0 2023-07-17T21:31:23.810079Z (mocktime: 2023-08-02T09:46:27Z) [scheduler] [wallet/wallet.h:895] [WalletLogPrintf] [default wallet] ResubmitWalletTransactions: resubmit 2 unconfirmed transactions
  node0 2023-07-17T21:31:23.810474Z (mocktime: 2023-08-02T09:46:27Z) [httpworker.2] [rpc/request.cpp:181] [parse] [rpc] ThreadRPCServer method=getmempoolentry user=__cookie__
  2023-07-17T21:31:23.811000Z TestFramework (ERROR): Assertion failed (...) AssertionError: No exception raised
  ```
  Fix this by flushing out the current resubmit call before triggering mempool eviction.

ACKs for top commit:
  MarcoFalke:
    Nice. lgtm ACK e667bd6
  achow101:
    ACK e667bd6
  jonatack:
    Light "this looks like the other tests in this file" ACK e667bd6

Tree-SHA512: 027c2177ecd8bea80ec388ec2564f8fcbc717efd2722304b16fc0e9fa7ad216af61977c4e360b8135de68586cf13b0aa729ffa4fa27bad655092c3a55f73933c

Dash adaptations:
- Kept Dash's `node.send(outputs=[...], options={"inputs": [indep_utxo]})` call form instead of upstream's named `inputs=[indep_utxo]` argument; Dash has not backported the send() named-argument change, and that line is unrelated context for this commit.
703b758 qa: Close SQLite connection properly (Hennadii Stepanov)

Pull request description:

  This PR is a follow-up for bitcoin#26462 that introduced a bug on Windows:
  ```
  >test\functional\wallet_descriptor.py
  ...
  PermissionError: [WinError 32] The process cannot access the file because it is being used by another process:
  ...
  ```

  From `sqlite3` Python module [docs](https://docs.python.org/3/library/sqlite3.html#how-to-use-the-connection-context-manager):
  > `Connection` object used as context manager only commits or rollbacks transactions, so the connection object should be closed manually.

ACKs for top commit:
  MarcoFalke:
    lgtm ACK 703b758
  theStack:
    utACK 703b758

Tree-SHA512: 35b1403507be06d1fc04e7e07ff56af5bcfe5013024671f0c1d9f3c41aacc4c777bcc6376ce82d720394e27450415d50ff5d5834ed388ec3f21503f86f1a42a5

Dash adaptations:
- Kept Dash's os.path.join(self.nodes[0].datadir, self.chain, "wallets", ...) path form since Dash lacks TestNode.wallets_path (upstream bitcoin#26076 datadir-helpers refactor not backported); applied only the connection-handling change
@DCG-Claude
DCG-Claude merged commit 55da003 into develop Sep 23, 2026
65 checks passed
@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

merged as dashpay#7717

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.

2 participants