Skip to content

backport: Merge bitcoin#28755, 28865, 31225, 31718, 28966#7364

Open
vijaydasmp wants to merge 5 commits into
dashpay:developfrom
vijaydasmp:June_2026_5
Open

backport: Merge bitcoin#28755, 28865, 31225, 31718, 28966#7364
vijaydasmp wants to merge 5 commits into
dashpay:developfrom
vijaydasmp:June_2026_5

Conversation

@vijaydasmp

Copy link
Copy Markdown

bitcoin back ports

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

⚠️ Potential Merge Conflicts Detected

This PR has potential conflicts with the following open PRs:

Please coordinate with the authors of these PRs to avoid merge conflicts.

@vijaydasmp vijaydasmp changed the title backport : Merge bitcoin#28755, 28865, 28966, 27884 backport: Merge bitcoin#28755, 28865, 28966, 27884 Jun 14, 2026
fanquake added 2 commits June 14, 2026 07:36
b74e449 build: remove potential for duplciate natpmp linking (fanquake)
4e95096 build: remove duplicate -lminiupnpc linking (fanquake)

Pull request description:

  Having the link check in the header check loop means we get `-lminiupnpc -lminiupnpc -lminiupnpc` on the link line.
  This is unnecessary, and results in warnings, i.e:
  ```bash
  ld: warning: ignoring duplicate libraries: '-levent', '-lminiupnpc'
  ld: warning: ignoring duplicate libraries: '-levent', '-lminiupnpc'
  ld: warning: ignoring duplicate libraries: '-levent', '-lminiupnpc'
  ```

  These warnings have been occurring since the new macOS linker released with Xcode 15, and also came up in hebasto#34.

  There are other duplicate lib issues, i.e with `-levent` + `-levent_pthreads -levent`, but those are less straight forward to solve, and won't be included here.

ACKs for top commit:
  jonatack:
    ACK b74e449
  hebasto:
    ACK b74e449, it fixes one issue mentioned in hebasto#34 (comment).
  TheCharlatan:
    ACK b74e449
  theuni:
    ACK b74e449

Tree-SHA512: 987a56ef17cbaf273cb672c41016f3f615b16889317325a9e88135d0c41f01af3840ad44a6f811a7df97f5873c9cd957e60aaa1b99bd408b17b4b1ffe2c68f36
fd30e96 test: migrate to some per-symbol ubsan suppressions (fanquake)

Pull request description:

  Now that the symbolizer should be hanging around (bitcoin#28814), migrate some file-wide suppressions to be symbol specific. Should assist in catching new issues that may otherwise go unnoticed due to file-wide suppression.

  Only tested (so far) on aarch64 using the native ASAN & FUZZ CI.

ACKs for top commit:
  maflcko:
    lgtm ACK fd30e96
  dergoegge:
    utACK fd30e96 (if CI is green)

Tree-SHA512: fbc44464d22813969dd4d1cdeab00042fa45f0af9bf1aed4fd3b688dc7b3c377a7c0f5f0c0a37ba65b649cfb5c7ff8ab2774500fe182d702c4340ca19f08479f
@vijaydasmp vijaydasmp force-pushed the June_2026_5 branch 6 times, most recently from 983388d to a0cb8c5 Compare June 14, 2026 17:51
@vijaydasmp vijaydasmp changed the title backport: Merge bitcoin#28755, 28865, 28966, 27884 backport: Merge bitcoin#28755, 28865, 28966 Jun 14, 2026
@vijaydasmp vijaydasmp changed the title backport: Merge bitcoin#28755, 28865, 28966 backport: Merge bitcoin#28755, 28865 Jun 14, 2026
fanquake added 2 commits June 15, 2026 08:57
ac286e0 doc: Fix grammatical errors in multisig-tutorial.md (secp512k2)

Pull request description:

  This pull request fixes grammatical errors in the `multisig-tutorial.md` document.

ACKs for top commit:
  Abdulkbk:
    ACK ac286e0

Tree-SHA512: 684fe16e802431109957b9cde441353edeb16ffffde4282310c1a6f104adffc53347d00a2cf3a5969a78803f3177d6056ca37d3b7e8be52c2ec43ec0b9fcf4d9
81b9800 fix typos (wgyt)

Pull request description:

ACKs for top commit:
  maflcko:
    lgtm ACK 81b9800

Tree-SHA512: 6a4f718c0afb0e3bf80ab7fa7fed32f882614c60b6e4972f54584aecac2f19384d781232e923a47b72d76229af907ebf7717d7b34f9be6c00394ce5d7ed0b8d4
@vijaydasmp vijaydasmp changed the title backport: Merge bitcoin#28755, 28865 backport: Merge bitcoin#28755, 28865, 31225, 31718 Jun 15, 2026
@vijaydasmp vijaydasmp marked this pull request as ready for review June 15, 2026 08:10
@thepastaclaw

thepastaclaw commented Jun 15, 2026

Copy link
Copy Markdown

✅ Review complete (commit 2e0dcdc)

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 50ba1f51-b9e1-4c0b-9a44-18c10e93e75d

📥 Commits

Reviewing files that changed from the base of the PR and between cad4245 and 2e0dcdc.

📒 Files selected for processing (1)
  • test/sanitizer_suppressions/ubsan
✅ Files skipped from review due to trivial changes (1)
  • test/sanitizer_suppressions/ubsan

Walkthrough

This pull request makes several independent improvements: documentation typos and wording are corrected across ci/README.md, contrib/guix/README.md, contrib/tracing/README.md, contrib/tracing/log_raw_p2p_msgs.py, and doc/multisig-tutorial.md. In configure.ac, the optional UPnP (miniupnpc) and NAT-PMP (natpmp) library detection is refactored from a combined header-and-library check into a two-step flow: header availability is checked first, and only on success is the library symbol checked. The test/sanitizer_suppressions/ubsan file replaces broad, file-based UBSan suppression entries with more targeted, symbol-scoped suppressions for unsigned-integer-overflow, implicit-integer-sign-change, and shift-base categories.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • PastaPastaPasta
  • knst
  • UdjinM6
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The description 'bitcoin back ports' is vague and uses non-descriptive terms that don't convey meaningful information about the specific changes or commit numbers mentioned in the title. Expand the description to explain which Bitcoin commits are being backported and what problems they address, such as mentioning the UBSan suppression fixes or documentation clarifications.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title references specific Bitcoin commit numbers being backported, directly relating to the changes which include documentation updates and configuration refactoring from those commits.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

Faithful backport of four small upstream PRs: typo/grammar doc fixes (bitcoin#31718, bitcoin#31225), configure.ac restructure for miniupnpc (bitcoin#28755), and per-symbol UBSan suppressions migration (bitcoin#28865). All agent findings were verified against upstream diffs and current source; none represent defects introduced by the Dash adaptation. The flagged 'incomplete' UBSan migration for policy/fees.cpp is in fact a faithful match of upstream — that line was intentionally not migrated in bitcoin#28865 (the narrowing to TxConfirmStats::removeTx happened in the later, unbackported bitcoin#28966). The packages.md/tracing-script notes are upstream prerequisite gaps that do not affect this PR.

…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)
      #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)
      #10 0x55cbbd284026 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x1928026) (BuildId: ffb89e0b86c093ca3bdeae6f85537737a4e3b42d)
      #11 0x7fe4aa8280cf  (/lib/x86_64-linux-gnu/libc.so.6+0x280cf) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      #12 0x7fe4aa828188 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28188) (BuildId: 96ab1a8f3b2c9a2ed37c7388615e6a726d037e89)
      #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>
@vijaydasmp vijaydasmp changed the title backport: Merge bitcoin#28755, 28865, 31225, 31718 backport: Merge bitcoin#28755, 28865, 31225, 31718, 28966 Jun 16, 2026

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

Incremental + cumulative re-review of 2e0dcdc0 after prior clean review at cad42458. No carried-forward prior findings exist, and CodeRabbit had zero inline findings. The latest delta only retunes test/sanitizer_suppressions/ubsan; the UBSan suppression state matches the relevant upstream backport after verification.

One cumulative backport completeness issue remains: the PR claims bitcoin#31718, but omits its doc/policy/packages.md hunk because Dash is missing the prerequisite package-RBF documentation from bitcoin#28984. This is documentation-only and not a build/runtime defect, but for a full upstream backport it should either bring the prerequisite doc state or explicitly document the intentional exclusion.

🔴 1 blocking

🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `doc/policy/packages.md`:
- [BLOCKING] doc/policy/packages.md:38-39: Missing prerequisite: bitcoin#28984
  bitcoin#31718 changes five files upstream, including doc/policy/packages.md. The Dash cherry-pick applies the other four doc/tracing typo fixes but omits the packages.md hunk. Upstream pre-31718 has a package replacement subsection after the package conflict rules, including the typo line `Replacements must pay more total total fees at the incremental relay fee`; Dash current still jumps from the older package conflict/ancestor-limit rules to `When packages are evaluated against ancestor/descendant limits...` and has no package replacement subsection to fix. Upstream blame shows the omitted paragraph was introduced by commit afd52d8e63 (`doc: update package RBF comment`), first merged via 41544b8f96 (`Merge bitcoin/bitcoin#28984: Cluster size 2 package rbf`). This is a soft prerequisite gap: the current cherry-pick handles it by omitting a documentation-only hunk, so it should not break build/runtime behavior, but the claimed full backport of bitcoin#31718 is incomplete without either bitcoin#28984's relevant package-RBF doc state or an explicit exclusion of that hunk.

  ---
  **Policy gate (backport-prereq-restore):** For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. `intentional_exclusion: true` or a matching entry in `policy_overrides`). Either backport the prerequisite or annotate the intentional exclusion in the PR description.

unsigned-integer-overflow:EvalScript
unsigned-integer-overflow:txmempool.cpp
unsigned-integer-overflow:util/strencodings.cpp
unsigned-integer-overflow:xoroshiro128plusplus.h

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔴 Blocking: 28865: kept broader policy/fees.cpp suppression instead of upstream's TxConfirmStats::removeTx narrowing

Upstream PR 28865 replaces 'implicit-integer-sign-change:policy/fees.cpp' with the narrower per-symbol 'implicit-integer-sign-change:TxConfirmStats::removeTx'. The Dash backport (commit 73add31) keeps the original file-scoped 'implicit-integer-sign-change:policy/fees.cpp' entry and does not add 'TxConfirmStats::removeTx'. This is the only ubsan line where Dash diverges from upstream's per-symbol migration. It is more permissive (suppresses any sign-change UBSan finding in fees.cpp) rather than less, so it is not a missing prerequisite and will not break the build or tests. Worth a note in case the divergence is unintentional — upstream's stated goal of 28865 was precisely to narrow these suppressions to specific symbols.


Policy gate (backport-prereq-restore): For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. intentional_exclusion: true or a matching entry in policy_overrides). The agent's original evidence above is the basis for this block; either backport the prerequisite or annotate the intentional exclusion in the PR description.

source: ['claude-backport-reviewer']

@vijaydasmp vijaydasmp requested a review from thepastaclaw June 16, 2026 04:14
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.

3 participants