Skip to content

Backport btc test#6

Closed
Shailendra53 wants to merge 3330 commits into
CryptoTuraTeam:masterfrom
Shailendra53:backport-btc-test
Closed

Backport btc test#6
Shailendra53 wants to merge 3330 commits into
CryptoTuraTeam:masterfrom
Shailendra53:backport-btc-test

Conversation

@Shailendra53
Copy link
Copy Markdown
Collaborator

Please remove the italicized help prompts before submitting or merging

Provide a general summary of your changes in the Title above

Pull requests without a rationale and clear improvement may be closed
immediately.

Please provide clear motivation for your patch and explain how it improves
Dash Core user experience or Dash Core developer experience
significantly:

  • Any test improvements or new tests that improve coverage are always welcome.
  • All other changes should have accompanying unit tests (see src/test/) or
    functional tests (see test/). Contributors should note which tests cover
    modified code. If no tests exist for a region of modified code, new tests
    should accompany the change.
  • Bug fixes are most welcome when they come with steps to reproduce or an
    explanation of the potential issue as well as reasoning for the way the bug
    was fixed.
  • Features are welcome, but might be rejected due to design or scope issues.
    If a feature is based on a lot of dependencies, contributors should first
    consider building the system outside of Dash Core, if possible.

Issue being fixed or feature implemented

  • Why is this change required? What problem does it solve?
  • If it fixes an open issue, please link to the issue here.

What was done?

Describe your changes in detail

How Has This Been Tested?

Please describe in detail how you tested your changes.

Include details of your testing environment, and the tests you ran
to see how your change affects other areas of the code, etc.

Breaking Changes

Please describe any breaking changes your code introduces

Checklist:

Go over all the following points, and put an x in all the boxes that apply.

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

kwvg and others added 30 commits December 19, 2025 02:41
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
The `ConnectManager` approach is no longer needed.
…pare action for wallet unlock checks

d47951d fix: always call EnsureWalletIsUnlocked (PastaPastaPasta)
c6cfe44 fix: protx_register_common_wrapper to include Prepare action for wallet unlock checks (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Commands such as

  ```
  protx register_prepare_evo b3b36f52bbc960edfe66867e0621a52bd5ac08011390959b3455d65aaec6893b 1 1.1.1.1:19999 yNGcrezN6NrRgf1DUuPP6pYsko3K9AdgHt 9889874ec1df289931886afee957c802bf0e751a6ec8461ac774f5affdabf06e7aa0c47ff94399e1d2ad597318733b8c yRkYwCNcXZQ3SfNp8hPP7sJHTdPMFna92y 8 yNfsHUoAysATEzxn5ZYD526Cw8AK8UTBdY eaa200ff6b7dde61ac4f943218307bcc249ea37b 36656 1443 yMm632VcVkZwndDvTVphmABvA6vWWMjxDh
  ```

  may fail if the wallet isn't unlocked with `GetKey: DecryptHDChain failed` where it should fail with `Error: Please enter the wallet passphrase with walletpassphrase first`

  ## What was done?
  include prepare in checking that wallet is unlocked

  ## How Has This Been Tested?

  ## Breaking Changes

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK d47951d
  kwvg:
    utACK d47951d

Tree-SHA512: 53d60fca82f8e3bceafe9a50c251878c8c51f966ded62649c6fd299342bb4f1f5961cbdc695366cd023f6868dc3d0901d89259b14fcdc707ad6557c8f244c036
…when it's no longer needed

3c6da38 ci: free disk space by removing `/output` folder when it's no longer needed (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  `/output` folder just sits there wasting disk space after `Build source` step:
  - multiprocess 0.6GB
  - ubsan 1.7GB
  - tsan 2.4GB
  - nowallet 2.6GB
  - arm-linux 2.7GB
  - linux64 and linux64_sqlite 3.3GB

  (NOTE: fuzz, mac and win64 don't produce anything in `/output` folder)

  ## What was done?
  Remove the folder at the end of `Build source` step. Also drop unused `BASE_OUTDIR` env var pointing to it from `Run unit tests` step to avoid confusion.

  ## How Has This Been Tested?
  https://github.com/UdjinM6/dash/actions/runs/20355332620

  ## Breaking Changes
  n/a

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  kwvg:
    utACK 3c6da38
  PastaPastaPasta:
    utACK 3c6da38

Tree-SHA512: 6cf26e4c2934dade8bc9c93bee649ceb113e67181690fee2c2be97700c4f840a87058dd527a734128929b16dc2168585ef2d6aadfafde2be286ff425e957db78
…cache global to ChainstateManager)

2dc0a25 lint: update circular dependencies allowlist (Kittywhiskers Van Gogh)
95d5f97 merge bitcoin#24595: move g_versionbitscache global to ChainstateManager (Kittywhiskers Van Gogh)
14a77f6 refactor: accept `ChainstateManager` in `CMNHFManager` ctor (Kittywhiskers Van Gogh)
838cfcb refactor: move `IsQuorumTypeEnabled` to `ChainstateManager` (Kittywhiskers Van Gogh)
d4dc191 refactor: adapt LLMQ logic to `DeploymentActive{At,After}` (Kittywhiskers Van Gogh)
2f9210f refactor: abstract masternode structures from Qt wallet (Kittywhiskers Van Gogh)
dc3f6bd trivial: force stricter lambda signature for `ForEachMN{,Shared}()` (Kittywhiskers Van Gogh)
a223b8c refactor: adapt CbTx, CreditPool logic to `DeploymentActive{At,After}` (Kittywhiskers Van Gogh)
b25e4fd refactor: adapt ProTx logic to `DeploymentActive{At,After}` (Kittywhiskers Van Gogh)
07ea998 partial bitcoin#24595: move g_versionbitscache global to ChainstateManager (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Depends on dashpay#6923

  * To reduce the diff size owing to Dash's extensive use of hardforks, `DeploymentActive{After,At}()` calls that simply require a height check have been moved to an explicit height check. This reduces the amount of "thread the needle" refactoring needed to provide `ChainstateManager`.

  * As the versionbits cache is now a member of `ChainstateManager`, all `DeploymentActive{After,At}()` calls needed to be adapted to pass a reference to `ChainstateManager`, which has necessitated substantial refactoring. For this reason, the backport has been isolated into a separate PR.

     > ℹ️ **Note**
     >
     > This text was written back when `CDeterministicMNList` and `CDeterministicMN` needed to accept `ChainstateManager`. Through hardening, this is no longer true. The underlying logic has still been retained to allow for future forks which may impact deterministic masternode logic.

    * Currently, Qt code is knowledgeable of objects like `CDeterministicMNList` and `CDeterministicMN`. This was fine because none of the functions called demanded knowledge of classes explicitly isolated from Qt code like `CChainState`, access to which is instead mediated through interfaces.

    * As the deglobalization now requires knowledge of `ChainstateManager`, both `CDeterministicMNList` and `CDeterministicMN` have been implemented as interfaces `interfaces::MnList` and `interfaces::MnEntry` respectively.

      * The problem of ensuring access to the context as `CDeterministicMNList` is updated from sources that cannot set the context themselves has been managed with a workaround, namely `interfaces::MnList::copyContextTo()`. The lifecycle of `MnList` will be as follows:

        A blank `MnList` is initialised without a context

        https://github.com/dashpay/dash/blob/1dcd28147a1eed2bb1096b5eb20073aa368b9dae/src/qt/clientmodel.cpp#L53

        The latest `MnList` is fetched with `interfaces::EVO::getListAtChainTip()`

        https://github.com/dashpay/dash/blob/1dcd28147a1eed2bb1096b5eb20073aa368b9dae/src/qt/clientmodel.cpp#L120-L126

        `interfaces::EVO` lends its node context to the `MnList`

        https://github.com/dashpay/dash/blob/1dcd28147a1eed2bb1096b5eb20073aa368b9dae/src/node/interfaces.cpp#L197-L206

        Calls like `interfaces::MnList::getProjectedMNPayees()` now work

        https://github.com/dashpay/dash/blob/1dcd28147a1eed2bb1096b5eb20073aa368b9dae/src/node/interfaces.cpp#L166-L174

        Event handler gives us the newest masternode list but doesn't have access to node context

        https://github.com/dashpay/dash/blob/1dcd28147a1eed2bb1096b5eb20073aa368b9dae/src/qt/clientmodel.cpp#L322-L325

        Context from older masternode list is copied into newer list

        https://github.com/dashpay/dash/blob/1dcd28147a1eed2bb1096b5eb20073aa368b9dae/src/qt/clientmodel.cpp#L108

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 2dc0a25

Tree-SHA512: 43523121366dd940ebf3eca3e30a7988412d438a4b11e7d9b1e27adfbdfb9778888a8f7bd67b2837bf907704e6a2c43d6884ad284dbbdf9fc8ecee17b71992cd
…1, 29375, 29117, 28605, 28784, 29035, 24097

12a96f7 Merge bitcoin#24097: Replace RecursiveMutex m_cs_banned with Mutex, and rename it (Andrew Chow)
4cdd5db Merge bitcoin#29035: test: fix `addnode` functional test failure on OpenBSD (fanquake)
73244b2 Merge bitcoin#28784: rpc: keep `.cookie` file if it was not generated (Andrew Chow)
85a3325 Merge bitcoin#28605: Fix typos (fanquake)
1e7dc56 Merge bitcoin#29117: wallettool: Always be able to dump a wallet's database (fanquake)
5a6bcba Merge bitcoin#29375: wallet: remove unused 'accept_no_keys' arg from decryption process (Ava Chow)
52f6409 Merge bitcoin#29241: doc: Add missing backtick in developer notes logging section (fanquake)
10ddb03 Merge bitcoin#28318: logging: Simplify API for level based logging (Ava Chow)
89f4744 Merge bitcoin-core/gui#749: make '-min' minimize wallet loading dialog (Hennadii Stepanov)

Pull request description:

  Bitcoin backports

ACKs for top commit:
  UdjinM6:
    utACK 12a96f7

Tree-SHA512: f8ba87f250f59eb7883afa76bf1f7d80c3cec11e42cb2cedb8cf5ff9c1f8ed997088f45476a1d4f7709afe829edbd4a51a326ec8686bd8fd7f6d5ad673796fda
…signer, user provided size of tx)

070e10f Merge bitcoin#25551: refactor: Throw exception on invalid Univalue pushes over silent ignore (fanquake)
90096af Merge bitcoin#23201: wallet: Allow users to specify input weights when funding a transaction (laanwj)

Pull request description:

  ## Issue being fixed or feature implemented

  When funding a transaction with external inputs, instead of providing solving data, a user may want to just provide the maximum signed size of that input. This is particularly useful in cases where the input is nonstandard as our dummy signer is unable to handle those inputs.

  The input size can be provided to any input regardless of whether it belongs to the wallet and the provided size will always be used regardless of any calculated input size. This allows the user to override the calculated input size which may overestimate in some circumstances due to missing information (e.g. if the private key is not known, a maximum size signature will be used, but the actual signer may be doing additional work which reduces the size of the signature).

  For `send` and `walletcreatefundedpsbt`, the input size is specified in a `size` field in an input object. For `fundrawtransaction`,  a new `input_sizes` field is added to the `options` object. This is an array of objects consisting of a txid, vout, and size.

  ## What was done?
  Bitcoin backport bitcoin#23201 and related fixes.
  This backport is not trivial to do, not trivial to dashify, and not trivial to review, so, it has own PR.

  Please note, that implementation of `FillInputToWeight` is different with Bitcoin Core. Due missing stack of "segregated data" we can't get _exactly_ the same size, it maybe different up to 2 bytes.

       /*
      // We will want to subtract the size of the Compact Size UInt that will also be serialized.
      // However doing so when the size is near a boundary can result in a problem where it is not
      // possible to have a stack element size and combination to exactly equal a target.
      // So we allow to fullfill transaction 2 byte less in this situation.
      */

  ## How Has This Been Tested?
  Run unit & functional tests

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    utACK 070e10f

Tree-SHA512: e55e2c16f752ff6ac44fdbb098897a396b2cf98551b9847237a8b92e934d4e47336f35bb2c742682cc4ce3502e3c817e1a601154b1a48fae7deed54d092a2a4d
…oinjoin/server

a56c106 refactor: drop dependency of PeerManager on CoinJoinServer (Konstantin Akimov)
e8685c5 refactor: use Scheduler's feature of NetHandler for coinjoin/server (Konstantin Akimov)
3274051 refactor: use NetHandler for CoinJoinServer to avoid multiple circular dependencies (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  There are several circular dependencies that may be resolved by using `NetHandler` interface in CJ

      "coinjoin/server -> net_processing -> masternode/active/context -> coinjoin/server"
      "coinjoin/server -> net_processing -> coinjoin/server"

  **This PR is not a part of separation of Network and Consensus code**; it's a side quest to break couple circular dependencies. It doesn't block me currently and any conflicting PRs may be merged before this one.
  ToDo the same refactoring for `coinjoin/client` and `coinjoin/walletman` (out of scope this PR, could be done anytime in the future, but probably a bit more complex than coinjoin/server because need to split `CJWalletManager` and `CJWalletManagerImpl::queueman`)

      "chainlock/chainlock -> llmq/quorums -> msg_result -> coinjoin/coinjoin -> chainlock/chainlock",
      "coinjoin/coinjoin -> instantsend/instantsend -> spork -> msg_result -> coinjoin/coinjoin",

  ## What was done?
  Two circular dependencies are resolved.
  This PR use `NetHandler` interface to aggregate network code.

  ## How Has This Been Tested?
  Run unit & functional tests.

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    utACK a56c106

Tree-SHA512: 2a6593cca3b8c15b48d382f0dc1f695594eca72f0739390c7da66e3a4a57bff6d75e23f5f142819a8536d7dc638071713a376a529d91dc1e4eb8d2df43abedc8
…place append-and-restart method in Qt wallet, enable wallet rescan for multiple loaded wallets

931707c feat(qt): enable wallet rescan for multiple loaded wallets (Kittywhiskers Van Gogh)
025df83 qt: switch over to rescan wallet activity (Kittywhiskers Van Gogh)
9e16077 qt: use `QPointer` to prevent potential dangling pointer on unload (Kittywhiskers Van Gogh)
9fed372 qt: add rescan wallet activity (Kittywhiskers Van Gogh)
8b73a88 qt: add interface method to trigger rescans (Kittywhiskers Van Gogh)
9ac357b qt: de-emphasize runtime arguments, isolate code path to wallet builds (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  [bitcoin#23123](bitcoin#23123) removes the `-rescan` startup parameter outright and users are expected to utilise the `rescanblockchain` RPC instead. This requires us to rework how the rescan option is implemented in Dash Qt, which uses the startup parameter.

  This pull request replaces it by implementing the core rescan logic in the wallet interface (as opposed to trying to invoke an RPC call from the Qt wallet, which would violate separation of concerns) and then implementing a wallet activity to avoid blocking the main thread.

  An additional benefit of this approach is that the rescan happens immediately without the overhead of a client restart.

  ## Additional Information

  * To avoid a potential race condition where a wallet could unloaded before the rescan can be triggered, `m_rescan_wallet_model` is now a `QPointer` (which will auto-reset when the underlying entity is destroyed, [source](https://doc.qt.io/qt-6/qpointer.html)) and we do one final check in the one-shot lambda before resolving the pointer.

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    light ACK 931707c

Tree-SHA512: 0a53c3e1679fbdb84f50a553ffc8513db584827b072aa9fcc5a6f6cee7b7fcd54d971741d1528bc1914671417442c433233582910a089398eff7eb7b63d1c038
Adds ctcache to cache clang-tidy analysis results, significantly reducing
CI time for subsequent runs. Unchanged files serve results from cache while
only modified files get re-analyzed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Move CTCACHE_DIR and CTCACHE_MAXSIZE_MB to ci/test/00_setup_env.sh
- Use command -v instead of hardcoded paths for clang-tidy and clang-tidy-cache
- Store clang-tidy location in CLANG_TIDY_BIN variable for reuse
- Extract cache cleanup logic into cleanup_ctcache() function
- Convert CTCACHE_COMMIT to ARG variable in Dockerfile

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Instead of hardcoding the Python script path, derive it from the
clang-tidy-cache wrapper location using the same logic the wrapper
itself uses. This improves portability if ctcache is installed in
a different location.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
f8d5c00 fix: add `$(PTHREAD_FLAGS)` to `dash_util_LDFLAGS` (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  Resolving a regression in Guix builds (see below)

  ```
    AR       libtest_util.a
  x86_64-linux-gnu-ld: dash_util-bitcoin-util.o: in function `std::thread::thread<void (&)(unsigned int, CBlockHeader&, unsigned int, unsigned int, std::atomic<bool>&), unsigned int&, std::reference_wrapper<CBlockHeader>, int&, int&, std::reference_wrapper<std::atomic<bool> >, void>(void (&)(unsigned int, CBlockHeader&, unsigned int, unsigned int, std::atomic<bool>&), unsigned int&, std::reference_wrapper<CBlockHeader>&&, int&, int&, std::reference_wrapper<std::atomic<bool> >&&)':
  /usr/include/c++/bits/std_thread.h:163:(.text._ZNSt6vectorISt6threadSaIS0_EE17_M_realloc_insertIJRFvjR12CBlockHeaderjjRSt6atomicIbEERjSt17reference_wrapperIS4_ERiSE_SC_IS7_EEEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_[_ZNSt6vectorISt6threadSaIS0_EE17_M_realloc_insertIJRFvjR12CBlockHeaderjjRSt6atomicIbEERjSt17reference_wrapperIS4_ERiSE_SC_IS7_EEEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_]+0x103): undefined reference to `pthread_create'
  x86_64-linux-gnu-ld: /usr/include/c++/bits/std_thread.h:163:(.text.startup+0x573): undefined reference to `pthread_create'
    CXXLD    test/test_dash
  x86_64-linux-gnu-ld: /gnu/store/dxk5rbssn95i797xzxycj1vzzmhw5r1b-gcc-cross-x86_64-linux-gnu-12.4.0-lib/lib/gcc/x86_64-linux-gnu/12.4.0/../../../../x86_64-linux-gnu/lib/../lib64/libstdc++.a(thread.o): in function `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())':
  (.text._ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE+0x28): undefined reference to `pthread_create'
  x86_64-linux-gnu-ld: /gnu/store/dxk5rbssn95i797xzxycj1vzzmhw5r1b-gcc-cross-x86_64-linux-gnu-12.4.0-lib/lib/gcc/x86_64-linux-gnu/12.4.0/../../../../x86_64-linux-gnu/lib/../lib64/libstdc++.a(thread.o): in function `std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)())':
  (.text._ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE+0x6f): undefined reference to `pthread_create'
  collect2: error: ld returned 1 exit status
  make[2]: *** [Makefile:8039: dash-util] Error 1
  make[2]: *** Waiting for unfinished jobs....
  make[2]: Leaving directory '/distsrc-base/distsrc-23.0.2-844-g6fbe514262c1-x86_64-linux-gnu/src'
  make[1]: *** [Makefile:21926: all-recursive] Error 1
  make[1]: Leaving directory '/distsrc-base/distsrc-23.0.2-844-g6fbe514262c1-x86_64-linux-gnu/src'
  make: *** [Makefile:804: all-recursive] Error 1
  ```

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    ACK f8d5c00

Tree-SHA512: 391f5421593f063e1662d645cae5a82f71ab980b0ccd4a905b15f981bb0c9bcfef4cc9b1cb3f6b272c19e9b74129e92c0171734a1b622f256b0be5fcb49a115c
kwvg and others added 25 commits January 23, 2026 21:11
includes:
- changes to `depends/packages/native_libmultiprocess.mk`
…coin#31048, bitcoin#31099, bitcoin#31172, bitcoin#31450, bitcoin#31608, bitcoin#31818, bitcoin#29881, bitcoin#32458, bitcoin#32400, bitcoin#32760, bitcoin#33178, bitcoin#33312, bitcoin#33780, bitcoin#33181, bitcoin#34102, partial bitcoin#29023, bitcoin#30454, bitcoin#30509, bitcoin#30510, bitcoin#31105, bitcoin#32922, bitcoin#33489, bitcoin#33445 (build backports: part 5)

ad5c299 doc: add release notes (Kittywhiskers Van Gogh)
6350e93 merge bitcoin#34102: capnp 1.3.0 (Kittywhiskers Van Gogh)
e6e4ad0 merge bitcoin#33181: build for Linux HOSTS with `-static-libgcc` (Kittywhiskers Van Gogh)
e403bba merge bitcoin#33780: disable libsanitizer in Linux GCC build (Kittywhiskers Van Gogh)
88108ac partial bitcoin#33445: Update Clang in "tidy" job (Kittywhiskers Van Gogh)
f9686bb partial bitcoin#33489: Drop support for EOL macOS 13 (Kittywhiskers Van Gogh)
4a6de56 merge bitcoin#33312: Disable `UndefinedBinaryOperatorResult` check in `src/ipc` (Kittywhiskers Van Gogh)
00f46c2 merge bitcoin#33178: increase maximum allowed (runtime) GCC to 7 (Kittywhiskers Van Gogh)
49f815d partial bitcoin#32922: use notarized v28.2 binaries and fix macOS detection (Kittywhiskers Van Gogh)
7bf7523 merge bitcoin#32760: capnp 1.2.0 (Kittywhiskers Van Gogh)
369e875 merge bitcoin#32400: Use modern Windows randomness functions (Kittywhiskers Van Gogh)
62cb45b merge bitcoin#32458: move `*-check.py` scripts under `contrib/guix/` (Kittywhiskers Van Gogh)
362013a merge bitcoin#29881: use GCC 13 to build releases (Kittywhiskers Van Gogh)
bfcf58a merge bitcoin#31818: remove test-security/symbol-check scripts (Kittywhiskers Van Gogh)
973eca0 merge bitcoin#31608: Clarify min macOS and Xcode version (Kittywhiskers Van Gogh)
7f80572 merge bitcoin#31450: disable gcov in base-linux-gcc (Kittywhiskers Van Gogh)
e189624 merge bitcoin#31172: increase minimum supported Windows to 10.0 (Kittywhiskers Van Gogh)
8494bd6 partial bitcoin#31105: Update libmultiprocess library (Kittywhiskers Van Gogh)
29c8bd9 merge bitcoin#31099: drop macOS LLVM install instructions (Kittywhiskers Van Gogh)
84b1e17 fix: bump `darwin_cmake_system_version` to match `OSX_MIN_VERSION` (Kittywhiskers Van Gogh)
cdc411d merge bitcoin#31048: Bump minimum supported macOS to 13.0 (Kittywhiskers Van Gogh)
5515a69 partial bitcoin#30510: Add IPC wrapper for Mining interface (Kittywhiskers Van Gogh)
ce6504e merge bitcoin#27038: test for `_FORTIFY_SOURCE` usage in release binaries (Kittywhiskers Van Gogh)
140848d partial bitcoin#30509: Add -ipcbind option to bitcoin-node (Kittywhiskers Van Gogh)
9df31ce partial bitcoin#30454: Introduce CMake-based build system (Kittywhiskers Van Gogh)
310a652 merge bitcoin#30423: simplify `test-security-check` (Kittywhiskers Van Gogh)
3bb0e30 partial bitcoin#29023: add historical release notes for 26.0 (Kittywhiskers Van Gogh)
c725a30 docs: add omitted "Compatibility" heading to release notes template (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  While working on adding support for Rust to our build system (see [dash#7109](dashpay#7109)), there were sources of conflict between our current setup and the minimums demanded by Rust and our FFI crate, [`cxx`](https://github.com/dtolnay/cxx). Specifically, Dash Core currently targets building for Windows 7 ([source](https://github.com/dashpay/dash/blob/cc50446936f8436d9ac3a2442bb348d93d8ba314/configure.ac#L818), [`0x601`](https://learn.microsoft.com/en-gb/windows/win32/winprog/using-the-windows-headers)) in direct conflict with the decision by Rusts' maintainers to drop support for Windows 7 effective Rust 1.78 ([source](https://blog.rust-lang.org/2024/02/26/Windows-7/))

  More recent versions of Rust have issues that require additional workarounds (see [`rust-lang/rust#128218`](rust-lang/rust#128218)) to keep support for Windows 7 around and using older versions of Rust is infeasible since both [`cxx`](https://github.com/dtolnay/cxx) and Rust packages currently under evaluation for integration with Dash Core require Rust 1.82+.

  Additionally, non-conformant definitions in the macOS SDK cause issues when attempting to build crates with FFI definitions (see [`dtolnay/cxx#1574`](dtolnay/cxx#1574)) which is resolved by an additional SDK bump that is not in the scope of this PR as it is _above_ the SDK version used upstream but does give cause to also consider a macOS target version bump, which _is_ done by upstream.

  ## Additional Information

  * Dependent on dashpay#6919

  * Dependency for dashpay#7109

  * macOS 11 (Big Sur) had its support period elapse ~2 years ago ([source](https://endoflife.date/macos)). macOS 14 (Sonoma) is the lowest version of macOS still receiving support from Apple and the new minimum version elected by upstream.

  * Windows 7 had its _extended_ support period elapse ~5 years ago ([source](https://learn.microsoft.com/en-gb/lifecycle/products/windows-7)) with the second lowest version, Windows 8.1, had its _extended_ support period elapse ~2 years ago ([source](https://learn.microsoft.com/en-us/lifecycle/products/windows-81)).

  ## Breaking Changes

  Dash Core binaries will now target Windows 10 and macOS 14 (Sonoma), replacing the previous target Windows 7 and macOS 11 (Big Sur).

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK ad5c299

Tree-SHA512: 650cbc12f2f129770623fd4e62bd7eb77ba0677ae33b765cc8359878633562e2a5c302f86d399400bb798d6a0ac5e6c030f3b8c657b63178f468bbe0d1b246a5
@Shailendra53 Shailendra53 closed this by deleting the head repository Jan 26, 2026
Shailendra53 pushed a commit that referenced this pull request Mar 27, 2026
…BlockTx suppression

fa9dc92 test: Add missing CBlockPolicyEstimator::processBlockTx suppression (MarcoFalke)

Pull request description:

  Fixes bitcoin#28865 (comment)

  ```
  # FUZZ=policy_estimator UBSAN_OPTIONS="suppressions=/root/fuzz_dir/scratch/fuzz_gen/code/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./src/test/fuzz/fuzz /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06

  ...

  policy/fees.cpp:632:27: runtime error: implicit conversion from type 'unsigned int' of value 4294574080 (32-bit, unsigned) to type 'int' changed the value to -393216 (32-bit, signed)
      #0 0x55cbbe10daee in CBlockPolicyEstimator::processBlockTx(unsigned int, CTxMemPoolEntry const*) src/policy/fees.cpp:632:27
      #1 0x55cbbe10e361 in CBlockPolicyEstimator::processBlock(unsigned int, std::vector<CTxMemPoolEntry const*, std::allocator<CTxMemPoolEntry const*>>&) src/policy/fees.cpp:680:13
      #2 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>)::$_1::operator()() const src/test/fuzz/policy_estimator.cpp:69:40
      #3 0x55cbbd84af48 in unsigned long CallOneOf<policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3>(FuzzedDataProvider&, policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3) src/./test/fuzz/util.h:43:27
      #4 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>) src/test/fuzz/policy_estimator.cpp:38:9
      #5 0x55cbbda1cc18 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:9
      #6 0x55cbbda1cc18 in LLVMFuzzerTestOneInput src/test/fuzz/fuzz.cpp:178:5
      #7 0x55cbbd26a944 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x190e944) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      #8 0x55cbbd253916 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f7916) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#9 0x55cbbd25945a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18fd45a) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#10 0x55cbbd284026 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x1928026) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#11 0x7fe4aa8280cf  (/lib/x86_64-linux-gnu/libc.so.6+0x280cf) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#12 0x7fe4aa828188 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28188) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#13 0x55cbbd24e494 in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f2494) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)

  SUMMARY: UndefinedBehaviorSanitizer: implicit-integer-sign-change policy/fees.cpp:632:27 in
  ```

  ```
  # base64 /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06
  AQEAAAAAADkFlVwAAQEAAAAAADkFlZVcACTDSSsP3746IAZrH48khwMAAQEB/QEALQAACwAAAAAA
  FgAAAAAAAQAABgAAAAAAAAAAAAAAAAAAACcQAAAAAAAAAAAAAAAAAAAAAAD6AAAAOQWVXAABAQAA
  AAAAOQWVlVwAIMNJKw/fvjogBmsfjySHAwABAQH9AQAtAAALAAAAAAAAAAABAAAGAAAAAAAAAAAA
  AAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAAPr/AAAAAAAAAAAAAAQAAAAA/wAAAAAAAAAAAAAEAAAA
  AAEBAeAIAVwBXAAA/jbSBvwBKABSKBwBYgEB2wAEkvXInHYAAAAAAAAAvgAAAAAA/9//6v8e/xIk
  MgAlAiUAOw==

ACKs for top commit:
  fanquake:
    ACK fa9dc92
  dergoegge:
    utACK fa9dc92

Tree-SHA512: 3898c17c928ecc2bcc8c7086359e9ae00da2197b4d8e10c7bf6d12415326c9bca3ef6e1d8d3b83172ccfa604ce7e7371415262ba705225f9ea4da8b1a7eb0306
Shailendra53 pushed a commit that referenced this pull request Mar 31, 2026
…BlockTx suppression

fa9dc92 test: Add missing CBlockPolicyEstimator::processBlockTx suppression (MarcoFalke)

Pull request description:

  Fixes bitcoin#28865 (comment)

  ```
  # FUZZ=policy_estimator UBSAN_OPTIONS="suppressions=/root/fuzz_dir/scratch/fuzz_gen/code/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./src/test/fuzz/fuzz /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06

  ...

  policy/fees.cpp:632:27: runtime error: implicit conversion from type 'unsigned int' of value 4294574080 (32-bit, unsigned) to type 'int' changed the value to -393216 (32-bit, signed)
      #0 0x55cbbe10daee in CBlockPolicyEstimator::processBlockTx(unsigned int, CTxMemPoolEntry const*) src/policy/fees.cpp:632:27
      #1 0x55cbbe10e361 in CBlockPolicyEstimator::processBlock(unsigned int, std::vector<CTxMemPoolEntry const*, std::allocator<CTxMemPoolEntry const*>>&) src/policy/fees.cpp:680:13
      #2 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>)::$_1::operator()() const src/test/fuzz/policy_estimator.cpp:69:40
      #3 0x55cbbd84af48 in unsigned long CallOneOf<policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3>(FuzzedDataProvider&, policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3) src/./test/fuzz/util.h:43:27
      #4 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>) src/test/fuzz/policy_estimator.cpp:38:9
      #5 0x55cbbda1cc18 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:9
      #6 0x55cbbda1cc18 in LLVMFuzzerTestOneInput src/test/fuzz/fuzz.cpp:178:5
      #7 0x55cbbd26a944 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x190e944) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      #8 0x55cbbd253916 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f7916) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#9 0x55cbbd25945a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18fd45a) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#10 0x55cbbd284026 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x1928026) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#11 0x7fe4aa8280cf  (/lib/x86_64-linux-gnu/libc.so.6+0x280cf) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#12 0x7fe4aa828188 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28188) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#13 0x55cbbd24e494 in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f2494) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)

  SUMMARY: UndefinedBehaviorSanitizer: implicit-integer-sign-change policy/fees.cpp:632:27 in
  ```

  ```
  # base64 /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06
  AQEAAAAAADkFlVwAAQEAAAAAADkFlZVcACTDSSsP3746IAZrH48khwMAAQEB/QEALQAACwAAAAAA
  FgAAAAAAAQAABgAAAAAAAAAAAAAAAAAAACcQAAAAAAAAAAAAAAAAAAAAAAD6AAAAOQWVXAABAQAA
  AAAAOQWVlVwAIMNJKw/fvjogBmsfjySHAwABAQH9AQAtAAALAAAAAAAAAAABAAAGAAAAAAAAAAAA
  AAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAAPr/AAAAAAAAAAAAAAQAAAAA/wAAAAAAAAAAAAAEAAAA
  AAEBAeAIAVwBXAAA/jbSBvwBKABSKBwBYgEB2wAEkvXInHYAAAAAAAAAvgAAAAAA/9//6v8e/xIk
  MgAlAiUAOw==

ACKs for top commit:
  fanquake:
    ACK fa9dc92
  dergoegge:
    utACK fa9dc92

Tree-SHA512: 3898c17c928ecc2bcc8c7086359e9ae00da2197b4d8e10c7bf6d12415326c9bca3ef6e1d8d3b83172ccfa604ce7e7371415262ba705225f9ea4da8b1a7eb0306
Shailendra53 pushed a commit that referenced this pull request Apr 5, 2026
…BlockTx suppression

fa9dc92 test: Add missing CBlockPolicyEstimator::processBlockTx suppression (MarcoFalke)

Pull request description:

  Fixes bitcoin#28865 (comment)

  ```
  # FUZZ=policy_estimator UBSAN_OPTIONS="suppressions=/root/fuzz_dir/scratch/fuzz_gen/code/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./src/test/fuzz/fuzz /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06

  ...

  policy/fees.cpp:632:27: runtime error: implicit conversion from type 'unsigned int' of value 4294574080 (32-bit, unsigned) to type 'int' changed the value to -393216 (32-bit, signed)
      #0 0x55cbbe10daee in CBlockPolicyEstimator::processBlockTx(unsigned int, CTxMemPoolEntry const*) src/policy/fees.cpp:632:27
      #1 0x55cbbe10e361 in CBlockPolicyEstimator::processBlock(unsigned int, std::vector<CTxMemPoolEntry const*, std::allocator<CTxMemPoolEntry const*>>&) src/policy/fees.cpp:680:13
      #2 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>)::$_1::operator()() const src/test/fuzz/policy_estimator.cpp:69:40
      #3 0x55cbbd84af48 in unsigned long CallOneOf<policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3>(FuzzedDataProvider&, policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3) src/./test/fuzz/util.h:43:27
      #4 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>) src/test/fuzz/policy_estimator.cpp:38:9
      #5 0x55cbbda1cc18 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:9
      #6 0x55cbbda1cc18 in LLVMFuzzerTestOneInput src/test/fuzz/fuzz.cpp:178:5
      #7 0x55cbbd26a944 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x190e944) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      #8 0x55cbbd253916 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f7916) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#9 0x55cbbd25945a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18fd45a) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#10 0x55cbbd284026 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x1928026) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#11 0x7fe4aa8280cf  (/lib/x86_64-linux-gnu/libc.so.6+0x280cf) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#12 0x7fe4aa828188 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28188) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#13 0x55cbbd24e494 in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f2494) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)

  SUMMARY: UndefinedBehaviorSanitizer: implicit-integer-sign-change policy/fees.cpp:632:27 in
  ```

  ```
  # base64 /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06
  AQEAAAAAADkFlVwAAQEAAAAAADkFlZVcACTDSSsP3746IAZrH48khwMAAQEB/QEALQAACwAAAAAA
  FgAAAAAAAQAABgAAAAAAAAAAAAAAAAAAACcQAAAAAAAAAAAAAAAAAAAAAAD6AAAAOQWVXAABAQAA
  AAAAOQWVlVwAIMNJKw/fvjogBmsfjySHAwABAQH9AQAtAAALAAAAAAAAAAABAAAGAAAAAAAAAAAA
  AAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAAPr/AAAAAAAAAAAAAAQAAAAA/wAAAAAAAAAAAAAEAAAA
  AAEBAeAIAVwBXAAA/jbSBvwBKABSKBwBYgEB2wAEkvXInHYAAAAAAAAAvgAAAAAA/9//6v8e/xIk
  MgAlAiUAOw==

ACKs for top commit:
  fanquake:
    ACK fa9dc92
  dergoegge:
    utACK fa9dc92

Tree-SHA512: 3898c17c928ecc2bcc8c7086359e9ae00da2197b4d8e10c7bf6d12415326c9bca3ef6e1d8d3b83172ccfa604ce7e7371415262ba705225f9ea4da8b1a7eb0306
Shailendra53 pushed a commit that referenced this pull request Apr 5, 2026
…BlockTx suppression

fa9dc92 test: Add missing CBlockPolicyEstimator::processBlockTx suppression (MarcoFalke)

Pull request description:

  Fixes bitcoin#28865 (comment)

  ```
  # FUZZ=policy_estimator UBSAN_OPTIONS="suppressions=/root/fuzz_dir/scratch/fuzz_gen/code/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./src/test/fuzz/fuzz /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06

  ...

  policy/fees.cpp:632:27: runtime error: implicit conversion from type 'unsigned int' of value 4294574080 (32-bit, unsigned) to type 'int' changed the value to -393216 (32-bit, signed)
      #0 0x55cbbe10daee in CBlockPolicyEstimator::processBlockTx(unsigned int, CTxMemPoolEntry const*) src/policy/fees.cpp:632:27
      #1 0x55cbbe10e361 in CBlockPolicyEstimator::processBlock(unsigned int, std::vector<CTxMemPoolEntry const*, std::allocator<CTxMemPoolEntry const*>>&) src/policy/fees.cpp:680:13
      #2 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>)::$_1::operator()() const src/test/fuzz/policy_estimator.cpp:69:40
      #3 0x55cbbd84af48 in unsigned long CallOneOf<policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3>(FuzzedDataProvider&, policy_estimator_fuzz_target(Span<unsigned char const>)::$_0, policy_estimator_fuzz_target(Span<unsigned char const>)::$_1, policy_estimator_fuzz_target(Span<unsigned char const>)::$_2, policy_estimator_fuzz_target(Span<unsigned char const>)::$_3) src/./test/fuzz/util.h:43:27
      #4 0x55cbbd84af48 in policy_estimator_fuzz_target(Span<unsigned char const>) src/test/fuzz/policy_estimator.cpp:38:9
      #5 0x55cbbda1cc18 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:9
      #6 0x55cbbda1cc18 in LLVMFuzzerTestOneInput src/test/fuzz/fuzz.cpp:178:5
      #7 0x55cbbd26a944 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x190e944) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      #8 0x55cbbd253916 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f7916) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#9 0x55cbbd25945a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18fd45a) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#10 0x55cbbd284026 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x1928026) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      vijaydasmp#11 0x7fe4aa8280cf  (/lib/x86_64-linux-gnu/libc.so.6+0x280cf) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#12 0x7fe4aa828188 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28188) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      vijaydasmp#13 0x55cbbd24e494 in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x18f2494) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)

  SUMMARY: UndefinedBehaviorSanitizer: implicit-integer-sign-change policy/fees.cpp:632:27 in
  ```

  ```
  # base64 /tmp/crash-154b42214e70781a9c1ad72d3f2693913dcf8c06
  AQEAAAAAADkFlVwAAQEAAAAAADkFlZVcACTDSSsP3746IAZrH48khwMAAQEB/QEALQAACwAAAAAA
  FgAAAAAAAQAABgAAAAAAAAAAAAAAAAAAACcQAAAAAAAAAAAAAAAAAAAAAAD6AAAAOQWVXAABAQAA
  AAAAOQWVlVwAIMNJKw/fvjogBmsfjySHAwABAQH9AQAtAAALAAAAAAAAAAABAAAGAAAAAAAAAAAA
  AAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAAPr/AAAAAAAAAAAAAAQAAAAA/wAAAAAAAAAAAAAEAAAA
  AAEBAeAIAVwBXAAA/jbSBvwBKABSKBwBYgEB2wAEkvXInHYAAAAAAAAAvgAAAAAA/9//6v8e/xIk
  MgAlAiUAOw==

ACKs for top commit:
  fanquake:
    ACK fa9dc92
  dergoegge:
    utACK fa9dc92

Tree-SHA512: 3898c17c928ecc2bcc8c7086359e9ae00da2197b4d8e10c7bf6d12415326c9bca3ef6e1d8d3b83172ccfa604ce7e7371415262ba705225f9ea4da8b1a7eb0306
Signed-off-by: Shailendra Kumar Gupta <guptashail05@gmail.com>
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.

8 participants