backport: Merge bitcoin#28755, 28865, 31225, 31718, 28966#7364
backport: Merge bitcoin#28755, 28865, 31225, 31718, 28966#7364vijaydasmp wants to merge 5 commits into
Conversation
|
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
983388d to
a0cb8c5
Compare
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
|
✅ Review complete (commit 2e0dcdc) |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
WalkthroughThis pull request makes several independent improvements: documentation typos and wording are corrected across Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
thepastaclaw
left a comment
There was a problem hiding this comment.
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>
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
🔴 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']
bitcoin back ports