-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
backport: trivial 2025 02 12 #6582
backport: trivial 2025 02 12 #6582
Conversation
… dbcache is too small fe683f3 log: Log VerifyDB Progress over multiple lines (Martin Zumsande) 61431e3 validation: Skip VerifyDB checks of level >=3 if dbcache is too small (Martin Zumsande) Pull request description: This is the first two commits from bitcoin#25574, leaving out all changes to `-verifychain` error-handling : - The Problem of [25563](bitcoin#25563) is that when we skip blocks at level 3 due to an insufficient dbcache (skipping some `DisconnectBlock()` calls), we would still attempt the level 4 checks, attempting to reconnect a block that was never disconnected, leading to an assert in `ConnectBlock()`. Fix this by not attempting level 4 checks in this case. - Logging of verification progress is now split over multiple lines. This is more verbose, but now each update has its own timestamp, and other threads logging concurrently will no longer lead to mangled output. This can be tested with a small `dbcache` value, for example: `bitcoind -signet -dbcache=10` `bitcoin-cli -signet verifychain 4 1000` Fixes bitcoin#25563 ACKs for top commit: MarcoFalke: review ACK fe683f3 🗄 john-moffett: ACK fe683f3 Tree-SHA512: 3e2e0f8b73cbc518a0fa17912c1956da437787aab95001c110b01048472e0dfe4783c44df22bd903d198069dd2f6b02bfdf74e0b934c7a776f144c2e86cb818a
a984bee [ci] change lint to bookworm for git v2.38 (glozow) Pull request description: Since 5497c14, verify-commits.py uses `git merge-tree` which requires git v2.38 or later. Fix the lint jobs on master (e.g. https://cirrus-ci.com/task/4971007513985024). ACKs for top commit: achow101: ACK a984bee hebasto: re-ACK a984bee Tree-SHA512: dd50598aefb6f9c86cf221dea27fcc521e335cb182f7a3abcb3215d3991794354085be3e07c133ab74ca8b957e3a6acc43722899165957b3d898867d6253ebdc
…ONDS env var 3fffff5 ci: Remove unused EXPECTED_TESTS_DURATION_IN_SECONDS env var (MarcoFalke) Pull request description: Remove long unused travis leftover ACKs for top commit: fanquake: ACK 3fffff5 dergoegge: ACK 3fffff5 Tree-SHA512: 34b85a18c0d34f54bbc6ff5c2454307318e4747145e11f52f08baddefef9e1b80d8f6c85efcad97e575380162fd193f2aa837e99b156ed7e3e95370b635ddf4e
36e2d51 qt, test: Add missed header (Hennadii Stepanov) Pull request description: Should fix MSVC link errors like [that](https://api.cirrus-ci.com/v1/task/4870882892447744/logs/build.log): ``` addressbooktests.obj : error LNK2019: unresolved external symbol "void __cdecl ConfirmMessage(class QString *,class std::chrono::duration<__int64,struct std::ratio<1,1000> >)" (?ConfirmMessage@@YAXPEAVQString@@v?$duration@_JU?$ratio@$00$0DOI@@std@@@chrono@std@@@z) referenced in function "void __cdecl `anonymous namespace'::EditAddressAndSubmit(class EditAddressDialog *,class QString const &,class QString const &,class QString)" (?EditAddressAndSubmit@?A0x2e52698e@@YAXPEAVEditAddressDialog@@AEBVQString@@1v3@@z) [C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\test_bitcoin-qt\test_bitcoin-qt.vcxproj] wallettests.obj : error LNK2001: unresolved external symbol "void __cdecl ConfirmMessage(class QString *,class std::chrono::duration<__int64,struct std::ratio<1,1000> >)" (?ConfirmMessage@@YAXPEAVQString@@v?$duration@_JU?$ratio@$00$0DOI@@std@@@chrono@std@@@z) [C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\test_bitcoin-qt\test_bitcoin-qt.vcxproj] C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\x64\Release\test_bitcoin-qt.exe : fatal error LNK1120: 1 unresolved externals [C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\test_bitcoin-qt\test_bitcoin-qt.vcxproj] ``` ACKs for top commit: fanquake: ACK 36e2d51 Tree-SHA512: 84685598fbf8857c0284ff660d953b93da3c2f47ba4ac0d3591b5009a6bcdb76898031fd70f289c4256ce389e485bd259ca145f9f862f085795e374dfa88705d
ff9d961 wallet: Add tracing for sqlite statements (Ryan Ofsky) Pull request description: I found sqlite tracing was useful for debugging a test in bitcoin#27790, and thought it might be helpful in other contexts too, so this PR adds an option to enable it. Tracing is still disabled by default and only shown with `-debug=walletdb -loglevel=walletdb:trace` options. ACKs for top commit: achow101: ACK ff9d961 kevkevinpal: ACK bitcoin@ff9d961 theStack: ACK ff9d961 Tree-SHA512: 592fabfab3218cec36c2d00a21cd535fa840daa126ee8440c384952fbb3913180aa3796066c630087e933d6517f19089b867f158e0b737f25283a14799eefb05
641897a guix: remove cURL from build env (fanquake) Pull request description: Remove cURL & osslsigncode option. ACKs for top commit: hebasto: ACK 641897a TheCharlatan: ACK 641897a Tree-SHA512: f917afe5aaffa8436009c63ace4a78ed3bc8a13fffeb12db2c12204f603fbd05f975f798c1bccaefa22b6131c91415477c115921dfe89f8fa064aab82bcd4a6f
… in "restore using dumped wallet" c4929cf test: wallet_backup.py, fix intermittent failure in "restore using dumped wallet" (furszy) Pull request description: Aiming to fix bitcoin#25652. The failure arises because the test expects `init_wallet()` (the test framework function) to create a wallet with no keys. However, the function also imports the deterministic private key used to receive the coinbase coins. This causes a race within the "restore using dumped wallet" case, where we intend to have a new wallet (with no existing keys) to test the 'importwallet()' RPC result. The reason why this failure is intermittent is that it depends on other peers delivering the chain right after node2 startup and prior to the test 'node2.getbalance()' call and also the synchronization of the validation queue. ACKs for top commit: MarcoFalke: lgtm ACK c4929cf Tree-SHA512: 80faa590439305576086a7d6e328f2550c97b218771fc5eba0567feff78732a2605d028a30a368d50944ae3d25fdbd6d321fb97321791a356416f2b790999613
f718a74 guix: remove python-macholib (fanquake) d3cbff1 guix: update signapple (fanquake) Pull request description: Update to the latest signapple, which includes achow101/signapple#13. Drop python-macholib and python-altgraph. ACKs for top commit: Sjors: ACK f718a74 Tree-SHA512: 199b2108f2f063b6b0fb5354ac79a30b46e848c923ebe7d02f7d7d3f08749817a1f6b4c14d21658fd2f2d68f8be1698e1999edf7e2366b1cae3bf2709a665e30
a4980da guix: remove input labels (fanquake) Pull request description: Migrate package definitions to use the newer format for propogated inputs. See https://guix.gnu.org/manual/en/html_node/package-Reference.html#index-inputs_002c-of-packages. This change remains compatible with Guix 1.2.0+. See also: https://guix.gnu.org/blog/2021/the-big-change/ Guix Build (aarch64 & x86_64): ```bash 4627c4eb83764f787f48b2aeab87b65bbaacb9ebfe33a5733d713165eec779af guix-build-a4980da1ce5e/output/aarch64-linux-gnu/SHA256SUMS.part ecdd6db7fe0ee45fee1bd91ceaf23c0d8154ed5ad73586b74d86ee36964e18d4 guix-build-a4980da1ce5e/output/aarch64-linux-gnu/bitcoin-a4980da1ce5e-aarch64-linux-gnu-debug.tar.gz 5f78980f95f3968248c27c4acd9993ec150ed3fa32802d89ccc6c6dc661a41bd guix-build-a4980da1ce5e/output/aarch64-linux-gnu/bitcoin-a4980da1ce5e-aarch64-linux-gnu.tar.gz 9af3dff2a8a4decf73048acea67d05f76d54ff84cecde833ea6860825bdaddc3 guix-build-a4980da1ce5e/output/arm-linux-gnueabihf/SHA256SUMS.part f53c6a5a229462a71f477db6f91112a2e9d31aafef294fca3c893916e904e2ed guix-build-a4980da1ce5e/output/arm-linux-gnueabihf/bitcoin-a4980da1ce5e-arm-linux-gnueabihf-debug.tar.gz 6ed01ecb71ed32098f70c8d667b1a48305b4b5b10f7bfc575eb8b5f787fe9534 guix-build-a4980da1ce5e/output/arm-linux-gnueabihf/bitcoin-a4980da1ce5e-arm-linux-gnueabihf.tar.gz 6ceaaa7dc2959626f280b1e1de28ac9ff9223216e1a3fa333cdd55c416ff550d guix-build-a4980da1ce5e/output/arm64-apple-darwin/SHA256SUMS.part 633df184701a21746ee56a5de6e3705c229eac8712b9a1563a82f4de52130d05 guix-build-a4980da1ce5e/output/arm64-apple-darwin/bitcoin-a4980da1ce5e-arm64-apple-darwin-unsigned.tar.gz 23b94cb4e870d71ae60bbb5a974362bbfabe901a73eeeb9d3bb5fbd70f5d649e guix-build-a4980da1ce5e/output/arm64-apple-darwin/bitcoin-a4980da1ce5e-arm64-apple-darwin-unsigned.zip f60b802b3e92fb9cf3b45b835f6cfb8988221cfdd39146ee3a11dbab977733bc guix-build-a4980da1ce5e/output/arm64-apple-darwin/bitcoin-a4980da1ce5e-arm64-apple-darwin.tar.gz 9df0a08896a2bc42f97193b34beb29536783eab04d3ae5fe5642258188fc6e55 guix-build-a4980da1ce5e/output/dist-archive/bitcoin-a4980da1ce5e.tar.gz 3fef561dd35dd4a4e9d0308591ebbdd5b1d26814ea48ff1f0c2732c62aef961b guix-build-a4980da1ce5e/output/powerpc64-linux-gnu/SHA256SUMS.part 187b8283f443bb29ed27546f983a5d098dfe49a059f52bc8ba0607242d37a5ae guix-build-a4980da1ce5e/output/powerpc64-linux-gnu/bitcoin-a4980da1ce5e-powerpc64-linux-gnu-debug.tar.gz 3f520b4bf1fbf955f9d25b5aa333f90989428cc9e417431998daa7c1041cb3bb guix-build-a4980da1ce5e/output/powerpc64-linux-gnu/bitcoin-a4980da1ce5e-powerpc64-linux-gnu.tar.gz 39abec9623d5086990a303c964a36e7f767bd6218e57261df95b616603eca0b8 guix-build-a4980da1ce5e/output/powerpc64le-linux-gnu/SHA256SUMS.part b71352ad4e8849937e42ad897d75f65866a529fd4d18059c5e6c39659a17f723 guix-build-a4980da1ce5e/output/powerpc64le-linux-gnu/bitcoin-a4980da1ce5e-powerpc64le-linux-gnu-debug.tar.gz 4fb92753e1baa253780088649bfe6816525e0ada7b17c5acc57ec804d9ab32f8 guix-build-a4980da1ce5e/output/powerpc64le-linux-gnu/bitcoin-a4980da1ce5e-powerpc64le-linux-gnu.tar.gz ed422d4365354a16b98ba7d4184a118ce98473e1b70ac8ba62a617aa3af3c784 guix-build-a4980da1ce5e/output/riscv64-linux-gnu/SHA256SUMS.part 9f002a8893748b0f6b581ab9d158a524e32140a3c271604b50cf1580b30b3000 guix-build-a4980da1ce5e/output/riscv64-linux-gnu/bitcoin-a4980da1ce5e-riscv64-linux-gnu-debug.tar.gz 6844df378ad2f4c209d323ffa3e77c6aa28f7f087b8755b2baa2a0d1119c365b guix-build-a4980da1ce5e/output/riscv64-linux-gnu/bitcoin-a4980da1ce5e-riscv64-linux-gnu.tar.gz ce0e27b6d831d5836ba3c5c8be377f08f4b92e9f390a7242aca5b68e67d1975e guix-build-a4980da1ce5e/output/x86_64-apple-darwin/SHA256SUMS.part 329c990fa71e694869bdcdd3e327a28eed2ad0b12f06d86e0957c6cb05e88910 guix-build-a4980da1ce5e/output/x86_64-apple-darwin/bitcoin-a4980da1ce5e-x86_64-apple-darwin-unsigned.tar.gz c44ec330e40285c1eba421f8d2e70a1538742fadbcc87f7f2f5a49bd83a72a7b guix-build-a4980da1ce5e/output/x86_64-apple-darwin/bitcoin-a4980da1ce5e-x86_64-apple-darwin-unsigned.zip e3626284d9bd61b67b170433d7bdb226b0f7f63d20dad4dd0482e55d7418ef64 guix-build-a4980da1ce5e/output/x86_64-apple-darwin/bitcoin-a4980da1ce5e-x86_64-apple-darwin.tar.gz 3e2a16e9dbb89d86e1e1884e0277160c3d1953c5ea5f88f29fe0a093a6f89599 guix-build-a4980da1ce5e/output/x86_64-linux-gnu/SHA256SUMS.part eb389467219c4af983f30e50e1f8d48601ed74690538bff76a55c0e585594a92 guix-build-a4980da1ce5e/output/x86_64-linux-gnu/bitcoin-a4980da1ce5e-x86_64-linux-gnu-debug.tar.gz d81fd209c03e74aebd7b28b42d3ea21f57957ede7fcb7baae721c8abb2885b6c guix-build-a4980da1ce5e/output/x86_64-linux-gnu/bitcoin-a4980da1ce5e-x86_64-linux-gnu.tar.gz 51de8a813459c1ce79bf9a2e39bf9f17b4771c6146ef55829f3ee0415d0ec9ec guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/SHA256SUMS.part 63dc5386467d0fc7f3c7b621273d019a822551fc9ac00be94c7d4ee446201836 guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64-debug.zip 3a4f2ef53165031648b1c3badc05698891d7c6541de3f67e9df513395c5c88c3 guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64-setup-unsigned.exe 92f0d67fbb8b37b6026287073df95431c961ad1820d7f8b9cd3b1ffcf58d4188 guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64-unsigned.tar.gz 3414b6c99d0bbd9ad88c0f88aafa70561dc107d1180fd42c90ad85033871c160 guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64.zip ``` ACKs for top commit: TheCharlatan: lgtm ACK a4980da Tree-SHA512: cbb8ca9613125d4c443124b99a600b44533688f322c8535c9d82fb3bb8de66b46e63c6aafcf2917f169494181ece6efd02e2efaa32ef4f138a520731540d600c
WalkthroughThis pull request includes a range of updates across configuration, build scripts, tests, and core functionality. The continuous integration configuration has been modified to update container images and remove a default environment variable. Dependency and package management files have been refactored to change input definitions, remove certain packages, and adjust commit references. Several patches have been removed from both build and source code files to streamline processing and address compatibility issues with specific compilers and language versions. Changes in core modules involve updates to documentation, logging, and handling of network peer properties, as well as modifications to serialization and transaction operations. Testing frameworks have also been enhanced with additional assertions and revised wallet initialization processes, while new SQL tracing functionality was introduced to improve database logging. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (6)
💤 Files with no reviewable changes (3)
🚧 Files skipped from review as they are similar to previous changes (3)
⏰ Context from checks skipped due to timeout of 90000ms (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
src/net_processing.cpp (1)
6299-6317
: 🛠️ Refactor suggestionAdd safety check for expiry timer overflow
The expiry timer calculation should be protected against potential overflow.
- state.m_object_download.m_check_expiry_timer = current_time + GetObjectExpiryInterval(MSG_TX)/2 + GetRandMicros(GetObjectExpiryInterval(MSG_TX)); + // Ensure we don't overflow when calculating next check time + const auto max_delay = std::chrono::microseconds::max() - current_time; + const auto expiry_interval = GetObjectExpiryInterval(MSG_TX); + const auto random_delay = GetRandMicros(expiry_interval); + const auto total_delay = std::min(expiry_interval/2 + random_delay, max_delay); + state.m_object_download.m_check_expiry_timer = current_time + total_delay;
🧹 Nitpick comments (13)
src/psbt.h (1)
253-253
: Consider using const references for unknown map iteration.For consistency with the
partial_sigs
change and to prevent accidental modifications, consider using const references when iterating over theunknown
map in the serialization methods:- for (auto& entry : unknown) { + for (const auto& entry : unknown) {This change would be applicable in three locations:
- Line 253 in
PSBTInput::Serialize
- Line 507 in
PSBTOutput::Serialize
- Line 665 in
PartiallySignedTransaction::Serialize
Also applies to: 507-507, 665-665
test/functional/p2p_outbound_eviction.py (1)
87-87
: Rename unused loop variable.The loop control variable
i
is never used within the loop. For clarity and to comply with static analysis suggestions, rename it to_
or_i
.- for i in range(10): + for _ in range(10):🧰 Tools
🪛 Ruff (0.8.2)
87-87: Loop control variable
i
not used within loop bodyRename unused
i
to_i
(B007)
src/net_processing.cpp (8)
549-552
: Improve comment clarity for service flags handlingThe comment explains the behavior of service flags handling during version handshake, but could be clearer about the distinction between inbound and non-inbound connections.
- // Overwrites potentially existing services. In contrast to this, - // unvalidated services received via gossip relay in ADDR/ADDRV2 - // messages are only ever added but cannot replace existing ones. + // For non-inbound connections, overwrites existing services in AddrMan. + // This differs from ADDR/ADDRV2 gossip messages where services can only + // be added but not replaced, to prevent service flag manipulation.
1428-1440
: Improve comment clarity for chain work comparisonThe comment could be clearer about the logic for resetting the timeout when a peer has sent a block with sufficient work.
- // The outbound peer has sent us a block with at least as much work as our current tip, so reset the timeout if it was set + // Reset the timeout if: + // 1. A timeout was previously set (m_timeout != 0s) + // 2. The peer has sent us a block with work >= our current tip + // This ensures we don't disconnect peers that are actively helping us sync
1435-1440
: Improve comment clarity for timeout setting conditionsThe comment explaining when timeouts are set could be more precise.
- // At this point we know that the outbound peer has either never sent us a block/header or they have, but its tip is behind ours - // AND - // we are noticing this for the first time (m_timeout is 0) - // OR we noticed this at some point within the last CHAIN_SYNC_TIMEOUT + HEADERS_RESPONSE_TIME seconds and set a timeout - // for them, they caught up to our tip at the time of setting the timer but not to our current one (we've also advanced). - // Either way, set a new timeout based on our current tip. + // Set a new timeout when: + // 1. First time seeing this peer (m_timeout is 0) OR + // 2. Previous timeout exists but peer's best known block: + // - Has caught up to the work target we set previously + // - But is still behind our current tip + // This ensures peers make consistent forward progress.
6207-6221
: Improve stalling detection and timeout handlingThe stalling detection logic could be made more robust by adding logging of the actual stall duration.
if (state.m_stalling_since.count() && state.m_stalling_since < current_time - stalling_timeout) { + const auto stall_duration = current_time - state.m_stalling_since; LogPrintf("Peer=%d%s is stalling block download, disconnecting\n", pto->GetId(), - fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : ""); + fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : "", + " stall_duration=", count_seconds(stall_duration), "s");
6227-6235
: Add timeout duration to disconnection messageThe block download timeout message could include more diagnostic information.
- LogPrintf("Timeout downloading block %s from peer=%d%s, disconnecting\n", queuedBlock.pindex->GetBlockHash().ToString(), pto->GetId(), fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : ""); + const auto timeout = std::chrono::seconds{consensusParams.nPowTargetSpacing} * + (BLOCK_DOWNLOAD_TIMEOUT_BASE + BLOCK_DOWNLOAD_TIMEOUT_PER_PEER * nOtherPeersWithValidatedDownloads); + const auto elapsed = current_time - state.m_downloading_since; + LogPrintf("Timeout downloading block %s from peer=%d%s, elapsed=%ds timeout=%ds, disconnecting\n", + queuedBlock.pindex->GetBlockHash().ToString(), pto->GetId(), + fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : "", + count_seconds(elapsed), count_seconds(timeout));
6319-6360
: Improve object request handling and loggingThe object request handling could benefit from more detailed logging and clearer error handling.
- Add more detailed logging:
- LogPrint(BCLog::NET, "%s -- GETDATA skipping inv=(%s), peer=%d\n", __func__, inv.ToString(), pto->GetId()); + LogPrint(BCLog::NET, "%s -- GETDATA skipping erased request inv=(%s), peer=%d\n", __func__, inv.ToString(), pto->GetId());
- Add error handling for invalid object types:
+ if (!inv.IsKnownType()) { + LogPrint(BCLog::NET, "%s -- GETDATA invalid type inv=(%s), peer=%d\n", __func__, inv.ToString(), pto->GetId()); + state.m_object_download.m_object_announced.erase(inv); + continue; + }
- Add timing information to request logs:
- LogPrint(BCLog::NET, "Requesting %s peer=%d\n", inv.ToString(), pto->GetId()); + LogPrint(BCLog::NET, "Requesting %s peer=%d last_request=%ds ago\n", + inv.ToString(), pto->GetId(), + count_seconds(current_time - last_request_time));
1047-1050
: Consider using std::unordered_map for better performanceThe
g_already_asked_for
andg_erased_object_requests
maps could potentially benefit from using unordered_map for better lookup performance.However, this change would require careful benchmarking to verify the performance improvement, as the actual benefit depends on the hash function quality and collision rates.
81-84
: Consider making constants configurableThe peer object limits are currently hardcoded. Consider making them configurable via command line or configuration file.
-static constexpr int32_t MAX_PEER_OBJECT_IN_FLIGHT = 100; -static constexpr int32_t MAX_PEER_OBJECT_ANNOUNCEMENTS = 2 * MAX_INV_SZ; +static constexpr int32_t DEFAULT_MAX_PEER_OBJECT_IN_FLIGHT = 100; +static constexpr int32_t DEFAULT_MAX_PEER_OBJECT_ANNOUNCEMENTS = 2 * MAX_INV_SZ; +static int32_t MAX_PEER_OBJECT_IN_FLIGHT = DEFAULT_MAX_PEER_OBJECT_IN_FLIGHT; +static int32_t MAX_PEER_OBJECT_ANNOUNCEMENTS = DEFAULT_MAX_PEER_OBJECT_ANNOUNCEMENTS;Then add command line options:
gArgs.AddArg("-maxpeerobjectinflight=<n>", strprintf("Maximum number of in-flight objects from a peer (default: %u)", DEFAULT_MAX_PEER_OBJECT_IN_FLIGHT), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); gArgs.AddArg("-maxpeerobjectannouncements=<n>", strprintf("Maximum number of announced objects from a peer (default: %u)", DEFAULT_MAX_PEER_OBJECT_ANNOUNCEMENTS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);src/validation.cpp (2)
460-461
: Enhance cache size handling for level 3 verifications.The code now properly handles cases where the database cache size is insufficient for level 3 verifications by:
- Checking cache size before attempting level 3 checks
- Skipping the checks if cache size is insufficient
- Setting a flag to track skipped verifications
This prevents potential memory issues while maintaining verification integrity.
Consider adding metrics to track how often L3 checks are skipped to help tune cache sizes appropriately.
Also applies to: 503-518
525-527
: Consider adding more context to the cache size recommendation message.The message could be more helpful by including the current cache size and recommended minimum size.
- LogPrintf("Skipped verification of level >=3 (insufficient database cache size). Consider increasing -dbcache.\n"); + LogPrintf("Skipped verification of level >=3 (current cache size: %zu bytes is insufficient). Consider increasing -dbcache to at least %zu bytes.\n", + curr_coins_usage, chainstate.m_coinstip_cache_size_bytes);.cirrus.yml (1)
51-51
: YAML Formatting: Reduce Extra Spaces in Merge KeyThe static analysis tool flagged extra spaces before the colon on line 51. Consider tightening the syntax to improve readability and meet YAML linting expectations. For example:
- << : *BASE_TEMPLATE + <<: *BASE_TEMPLATE🧰 Tools
🪛 YAMLlint (1.35.1)
[warning] 51-51: too many spaces before colon
(colons)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (23)
.cirrus.yml
(1 hunks)ci/test/00_setup_env.sh
(0 hunks)contrib/guix/libexec/build.sh
(2 hunks)contrib/guix/manifest.scm
(9 hunks)contrib/macdeploy/gen-sdk
(0 hunks)depends/hosts/darwin.mk
(1 hunks)depends/packages/qt.mk
(2 hunks)depends/patches/qt/darwin_no_libm.patch
(1 hunks)depends/patches/qt/fast_fixed_dtoa_no_optimize.patch
(0 hunks)src/addrman.h
(1 hunks)src/init/common.cpp
(1 hunks)src/leveldb/include/leveldb/status.h
(2 hunks)src/net_processing.cpp
(2 hunks)src/psbt.h
(1 hunks)src/qt/test/util.cpp
(1 hunks)src/qt/test/util.h
(1 hunks)src/test/addrman_tests.cpp
(2 hunks)src/validation.cpp
(3 hunks)src/wallet/scriptpubkeyman.cpp
(0 hunks)src/wallet/sqlite.cpp
(2 hunks)test/functional/p2p_outbound_eviction.py
(1 hunks)test/functional/test_runner.py
(1 hunks)test/functional/wallet_backup.py
(1 hunks)
💤 Files with no reviewable changes (4)
- ci/test/00_setup_env.sh
- contrib/macdeploy/gen-sdk
- depends/patches/qt/fast_fixed_dtoa_no_optimize.patch
- src/wallet/scriptpubkeyman.cpp
✅ Files skipped from review due to trivial changes (2)
- src/qt/test/util.h
- src/qt/test/util.cpp
🧰 Additional context used
🪛 YAMLlint (1.35.1)
.cirrus.yml
[warning] 51-51: too many spaces before colon
(colons)
🪛 Ruff (0.8.2)
test/functional/p2p_outbound_eviction.py
87-87: Loop control variable i
not used within loop body
Rename unused i
to _i
(B007)
⏰ Context from checks skipped due to timeout of 90000ms (9)
- GitHub Check: win64-build / Build source
- GitHub Check: linux64_fuzz-build / Build source
- GitHub Check: linux64_ubsan-build / Build source
- GitHub Check: linux64-build / Build source
- GitHub Check: linux64_sqlite-build / Build source
- GitHub Check: linux64_multiprocess-build / Build source
- GitHub Check: linux64_tsan-build / Build source
- GitHub Check: arm-linux-build / Build source
- GitHub Check: linux64_nowallet-build / Build source
🔇 Additional comments (31)
src/psbt.h (1)
195-195
: LGTM! Good improvement in const-correctness.The change to use
const auto&
instead ofauto
for iterating overpartial_sigs
is a good practice as it:
- Prevents accidental modifications to the map elements during iteration
- Makes the intent clearer that the iteration is for reading only
- Can potentially improve performance by avoiding unnecessary copying
test/functional/p2p_outbound_eviction.py (11)
1-5
: Header and license check.The shebang and MIT license header conform to typical project standards.
6-15
: Comprehensive docstring appreciated.The multi-line docstring provides a clear explanation of the test's purpose and covers the core functionality.
16-25
: Imports align with project structure.These imports from the test framework keep the code self-contained and leverage existing utilities.
26-29
: Timeout constants seem appropriately named.
CHAIN_SYNC_TIMEOUT
andHEADERS_RESPONSE_TIME
are descriptive; maintaining them as top-level constants improves readability.
31-34
: Straightforward test parameter setup.
num_nodes = 1
is consistent with a single-node environment for easier control over outbound connections.
35-122
: Robust logic for outbound eviction test (unprotected peers).
- Mock time manipulations and sequential checks simulate realistic eviction conditions accurately.
- The step-by-step approach to induce timeouts and verify evictions ensures thorough coverage of edge cases.
- Return value checks after block generation verify the code properly handles chain synchronization.
🧰 Tools
🪛 Ruff (0.8.2)
87-87: Loop control variable
i
not used within loop bodyRename unused
i
to_i
(B007)
123-151
: Solid coverage for protected peer eviction checks.
- The logic accurately verifies that peers sending a valid tip block remain protected.
- Timeouts test whether protected peers remain connected despite delayed chain updates.
152-214
: Mixed scenario testing is well-structured.
- Splitting peers into protected/unprotected and honest/misbehaving categories provides comprehensive coverage.
- Logging distinguishes peer behaviors and confirms that only misbehaving unprotected peers are evicted.
215-242
: Blocks-relay-only path tested thoroughly.
- Testing block-relay peers ensures they do not receive the same protection as full-relay peers.
- The final eviction check confirms correct handling of peer roles.
243-250
: Sequence of test calls is logical.
run_test
orchestrates the various scenarios in a consistent manner, ensuring coverage of all eviction paths before concluding.
252-253
: Main entry point is straightforward.This block properly integrates the test with the framework's runner.
src/net_processing.cpp (2)
6207-6221
:✅ Verification successful
Verify stalling detection edge cases
The stalling detection logic should be verified for potential edge cases.
🏁 Script executed:
#!/bin/bash # Search for all stalling-related code to verify timeout handling rg "m_stalling_since" -A 5 -B 5 rg "BLOCK_STALLING_TIMEOUT" -A 5 -B 5Length of output: 7380
Stalling Detection Edge Cases Verified
The review request was to scrutinize the stalling detection logic for potential edge cases. After reviewing the code and searching for related logic (e.g., the use of
m_stalling_since
andBLOCK_STALLING_TIMEOUT
), the verification confirms that:
- The condition to detect a stalled peer triggers only when
m_stalling_since
has been set (i.e., non-zero) and the elapsed time exceeds the dynamic timeout.- The dynamic timeout adjustment (both increase on stalling and gradual decrease) is properly bounded by
BLOCK_STALLING_TIMEOUT_MAX
and defaults, respectively.- The atomic update using
compare_exchange_strong
ensures that the timeout is updated safely and only when a new appropriate value is computed.No additional edge cases seem to be unaddressed, and the current implementation appears robust.
1428-1433
:✅ Verification successful
Verify chain work comparison logic
The chain work comparison logic for resetting timeouts needs careful verification to ensure it correctly handles edge cases.
🏁 Script executed:
#!/bin/bash # Search for all chain work comparisons to verify consistency rg "nChainWork" -A 5 -B 5Length of output: 40041
Verified: Chain Work Comparison Logic Appears Correct
I’ve reviewed the chain work comparisons across the codebase—including those used in resetting the timeout logic in
src/net_processing.cpp
—and found them to be consistent with other parts of the code. In particular, the use of comparison operators (e.g., using>=
when comparing the best-known block’s work with the active chain tip’s work) correctly handles edge cases without any discrepancies.No changes are required.
depends/patches/qt/darwin_no_libm.patch (1)
1-18
:❓ Verification inconclusive
LGTM! Build configuration simplification looks good.
The removal of explicit
-lm
linking is correct since:
- GCC with libstdc++ automatically includes the math library
- This resolves macOS cross-build issues
Let's verify that the Qt build still works correctly after this change:
🏁 Script executed:
#!/bin/bash # Description: Verify Qt build configuration and dependencies # Check if libm is still available through automatic linking nm $(find . -name "*.a" -o -name "*.so" -o -name "*.dylib") 2>/dev/null | grep -w sinLength of output: 75
Build Verification: Manual Check Recommended
LGTM! The build configuration simplification looks good, and removal of the explicit
-lm
link is appropriate since GCC with libstdc++ automatically includes the math library, which also resolves the macOS cross-build issues.However, the automated verification script intended to check for the presence of math symbols (e.g.,
sin
) produced no output. This result is inconclusive. Please manually verify that the expected math symbols are available in the built libraries to ensure that the automatic linking oflibm
is functioning as intended.depends/hosts/darwin.mk (1)
53-60
: LGTM! Compiler configuration is well-structured and documented.The compiler definitions are clear, maintain all necessary flags, and are properly documented with explanatory comments above.
src/leveldb/include/leveldb/status.h (1)
107-117
: LGTM! Proper handling of self-assignment with clear suppression of linter warnings.The implementation correctly:
- Handles self-assignment case
- Uses NOLINT directives appropriately
- Maintains exception safety
src/init/common.cpp (1)
66-66
: LGTM! Improved clarity in logging configuration documentation.The updated description better explains:
- Which log levels are always enabled (error, warning, info)
- How to configure category-specific levels
- The relationship with -debug option and logging RPC
src/addrman.h (1)
124-133
: LGTM! Documentation improvements enhance clarity.The updated documentation for the
Add
method now clearly explains:
- The behavior for existing entries (may be updated with additional service flags)
- The handling of addresses in the new table (may be added to more buckets)
- The return value semantics (true for successful additions or bucket additions, unaffected by updates)
test/functional/wallet_backup.py (1)
228-231
: LGTM! Test improvements enhance coverage.The addition of empty wallet creation before testing
importwallet()
improves test coverage by:
- Ensuring a clean state before wallet import
- Testing the import functionality with empty wallets
- Clearly documenting the test's intent
depends/packages/qt.mk (1)
28-28
:✅ Verification successful
Verify the new patch file and its purpose.
The addition of
darwin_no_libm.patch
suggests changes to the math library linking on Darwin systems.Please confirm:
- The existence and contents of the patch file
- The specific build issues it addresses on Darwin systems
🏁 Script executed:
#!/bin/bash # Description: Check the contents of the new patch file # Verify patch file exists and show its contents cat depends/patches/qt/darwin_no_libm.patchLength of output: 581
Patch Verified: Darwin Build Issue Confirmed
The patch file at
depends/patches/qt/darwin_no_libm.patch
exists and its contents confirm that it removes the explicit-lm
link from the Qt tools. This change addresses the build issues observed during the macOS cross build by relying on GCC's default linking behavior with libstdc++, thus eliminating the need for a manual-lm
specification.
- File verification: The patch file exists and includes a diff that removes the explicit
-lm
link fromqtbase/src/corelib/tools/tools.pri
.- Build issue addressed: Removing
-lm
resolves cross building issues on Darwin systems where this explicit link is unnecessary and can cause conflicts.src/wallet/sqlite.cpp (2)
39-52
: LGTM! Well-implemented SQL tracing with security considerations.The
TraceSqlCallback
implementation:
- Safely handles memory with proper cleanup of expanded SQL
- Conservatively logs only read-only statements to prevent leaking sensitive data
- Includes proper error handling
250-256
: LGTM! Proper integration of SQL tracing.The tracing setup:
- Is correctly guarded by appropriate log category and level checks
- Includes error handling for trace setup failures
- Uses appropriate trace flags
contrib/guix/manifest.scm (1)
84-88
: LGTM! Consistent list formatting.The changes standardize the list format across package definitions, making the code more consistent and maintainable.
Also applies to: 151-154, 408-411
test/functional/test_runner.py (1)
278-278
: LGTM! Added new P2P outbound eviction test.The addition of
p2p_outbound_eviction.py
to the base test suite ensures that peer eviction functionality is tested by default, which is important for maintaining network health.src/test/addrman_tests.cpp (2)
1051-1051
: LGTM! Updated test description.The comment now accurately reflects that the test also verifies service flag behavior during address updates via
Add()
.
1079-1103
: LGTM! Comprehensive service flag behavior tests.The new test cases thoroughly verify service flag behavior in various scenarios:
- Gossip relay updates can only add services, not remove them
- Direct connections can overwrite service flags
- Service flags persist during tried table promotion
- Service flags can be updated for addresses in tried table
This ensures robust handling of service flags throughout the address manager's lifecycle.
src/validation.cpp (2)
459-460
: LGTM! Good addition of tracking variable for skipped verifications.The new
skipped_l3_checks
variable helps track when level 3 verifications are skipped due to insufficient cache size, improving observability.
551-552
: LGTM! Improved logging format.The modified logging format provides clearer progress indication by using a consistent format for all verification progress messages.
.cirrus.yml (1)
50-63
: Update Lint Task ConfigurationThe new lint task now targets "lint [bookworm]" using the
debian:bookworm
image. This update appears correctly aligned with a move away from Ubuntu-based images. Please verify that downstream linting scripts are compatible with Debian as the base OS.🧰 Tools
🪛 YAMLlint (1.35.1)
[warning] 51-51: too many spaces before colon
(colons)
[warning] 57-57: too many spaces before colon
(colons)
contrib/guix/libexec/build.sh (1)
183-190
: Clean Environment for Darwin After Qt BuildThe newly added case block for
*darwin*
correctly unsets the environment variablesC_INCLUDE_PATH
,CPLUS_INCLUDE_PATH
, andLIBRARY_PATH
after building Qt. This helps prevent any unwanted side effects in subsequent build steps. The implementation is clear and follows best practices.
cc9330c
to
0fc6cdd
Compare
@@ -255,7 +255,6 @@ define $(package)_preprocess_cmds | |||
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \ | |||
patch -p1 -i $($(package)_patch_dir)/duplicate_lcqpafonts.patch && \ | |||
patch -p1 -i $($(package)_patch_dir)/utc_from_string_no_optimize.patch && \ | |||
patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
29650: incomplete (failed to drop $(package)_patches += fast_fixed_dtoa_no_optimize.patch
line)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that's so weird... Wonder why it didn't "conflict" / require manual intervention
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- bitcoin#30451 is already included in dash#6421, consider dropping it
- bitcoin#29230 assumes bitcoin#28318 is merged, which isn't the case as of
develop
(c72cbbf), consider dropping it
74ebd4d doc, test: Test and explain service flag handling (Martin Zumsande) Pull request description: Service flags received from the peer-to-peer network are handled differently, depending on how we receive them. If received directly from an outbound peer the flags belong to, they replace existing flags. If received via gossip relay (so that anyone could send them), new flags are added, but existing ones but cannot be overwritten. Document that and add test coverage for it. ACKs for top commit: achow101: ACK 74ebd4d furszy: ACK 74ebd4d brunoerg: utACK 74ebd4d Tree-SHA512: 604adc3304b8e3cb1a10dfd017025c10b029bebd3ef533f96bcb5856fee5d4396a9aed4949908b8e7ef267ad21320d1814dd80f88426330c5c9c2c529c497591
…instances in spkm's `FillPSBT` methods e2ad343 wallet: remove unused `SignatureData` instances in spkm's `FillPSBT` methods (Sebastian Falbesoner) Pull request description: These are filled with signature data from a PSBT input, but not used anywhere after, hence they can be removed. Note that the same code is in the `SignPSBTInput` function where the `sigdata` result is indeed used. ACKs for top commit: achow101: ACK e2ad343 brunoerg: crACK e2ad343 Tree-SHA512: f0cabcc000bcea6bc7d7ec9d3be2e2a8accbdbffbe35252250ea2305b65a5813fde2b8096fbdd2c7cccdf417ea285183dc325fc2d210d88bce62978ce642930e
0fc6cdd
to
9a93a65
Compare
76d6537 depends: drop 1 qt determinism patch (fanquake) Pull request description: No-longer required now that we are building with GCC 12. Guix Build (x86_64 && aarch64): ```bash e1c5b2c1c1a184e9d6985f26d26c61ca049e4541c699c6c9ce334beb832ed8da guix-build-76d6537698e4/output/aarch64-linux-gnu/SHA256SUMS.part 22f5d39fd9eac2d1fdbf2794fd6272ce05a1dfda2aeb2280a5dbafe76d0eec3d guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu-debug.tar.gz 1cc798fb30b9e85e3b94049a671e2881b6b8694e52ae5e6468805c8ea6ea637f guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu.tar.gz a8c4ecc550aba01292885343ae9d53e31dfc0ef26f885fcf00493c754c5f9deb guix-build-76d6537698e4/output/arm-linux-gnueabihf/SHA256SUMS.part d037b87949640d441b1ea000fd3fb27a508a699c5a6d69b6647611325cb9b7f5 guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf-debug.tar.gz a858a0bce444a9eaf2b36d188198e54cdc14d85e344863d9e176dca94e458537 guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf.tar.gz a802412eb9f2bbe2c573052581c21c44281e78c65d6ebc243105d5004768f0f9 guix-build-76d6537698e4/output/arm64-apple-darwin/SHA256SUMS.part 20eeb2a28f096f53eeae61c64082c7eef0fb4d4e8dd7fb173a6cc19bf1960165 guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.tar.gz 54fae4652f21772d4d861b1a9dd3dcb913f088e6b7049a566c748ccdf2acede3 guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.zip e986f3d8311df3ab26860c8747e9634687617609a317fdf242365d408235f417 guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin.tar.gz 3efced764d3b62362c906f1fbbdecf347be1aab877afb2d6ce8f39d24b3d7437 guix-build-76d6537698e4/output/dist-archive/bitcoin-76d6537698e4.tar.gz 6bd047bd080ae0d0a08a15e83a79dfd17bf29227599517d0bccae17a0224a741 guix-build-76d6537698e4/output/powerpc64-linux-gnu/SHA256SUMS.part 102909ef544962e08577464b3293c0013237391b7577d7abc26f1244d3d0157d guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu-debug.tar.gz 01cf35c37093f768c953697c8d0102316e1e719befd2853a74266bcc2105c52c guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu.tar.gz 467f858d1aba32ee290e6ba00feee632fcb56907f77e5b48f4de969d8ce78457 guix-build-76d6537698e4/output/riscv64-linux-gnu/SHA256SUMS.part 893cb65a79709c58ebafb003ce43b1cd51434d9c0a9175b7dfede6aa99fec3d2 guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu-debug.tar.gz be3bd03cdef59928eb8a18bd59f48ad27ae38a6382bf94651774845adbd28308 guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu.tar.gz 1ff2b04cccd44c4c6526387307fb381f52fbc36b31a51730435d6b99e0fa4610 guix-build-76d6537698e4/output/x86_64-apple-darwin/SHA256SUMS.part 9c84639c4b7e1e39c06da4c9430efe94993ce97fbc279b38502c1d4fc25ac801 guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.tar.gz e65c009c728aa42f24b6970018336058adc78fba09b85aa76310de98fdabb8ad guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.zip 1a85307eec81cc13e5d599db1bb7cddd3d4f6847f2bad7685e096c439b44489a guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin.tar.gz 10189926b6ccef3ab1feee3edce34a80a30e60ee67c00519e344fefd6c9880d0 guix-build-76d6537698e4/output/x86_64-linux-gnu/SHA256SUMS.part 0094570197c0a91b7a903c1250bf899ea50d7452608da03f5dd825febd5e216b guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu-debug.tar.gz 8375afd9ea4376b354548270323fa0f5f3244579b59dcdf9c26330337b5719ab guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu.tar.gz 5a30053ee8db9eb2d083e8569a1a69b24acc84de1028f3f40d5e902a1174e49e guix-build-76d6537698e4/output/x86_64-w64-mingw32/SHA256SUMS.part 1d624077e027dd6f213c85d75fdbac12d61c45235946817c406132fbd222c939 guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-debug.zip e75107ce5608d83708b4e9b5a64d50e0282560ee2d8d915a20993fd383d2d456 guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-setup-unsigned.exe 7fb1f412fd71e0e8302add6bcc5679ad6990d87c16688a396769844f72ae7c82 guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-unsigned.tar.gz be24df85e0834823f0ad9611667100330972d3a18460099d7df5b4386fbd6403 guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64.zip ``` ACKs for top commit: TheCharlatan: ACK 76d6537 Tree-SHA512: 69e698e9b0036ecb1f89db82427c25d0368d2178c3dc2bc751181c19a1139929bf0da160af6f3e021ca3da59ea66f7b7330aa6295f5e65c6ef0bbcf369fcbc94
fab01b5 refactor: performance-for-range-copy in psbt.h (MarcoFalke) Pull request description: A copy of the partial signatures is not required before serializing them. For reference, this was found by switching the codebase to `std::span` (not sure why it wasn't found with `Span` though): ``` ./psbt.h:240:23: error: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy,-warnings-as-errors] 240 | for (auto sig_pair : partial_sigs) { | ^ | const & ACKs for top commit: tdb3: ACK fab01b5 theStack: utACK fab01b5 Tree-SHA512: b55513d8191118499716684190ee568d171b50ae9171d246ca6e047f0cfd3ec14c9453d721e88af55e47bb41fa66cbafdbfb47bc5f9b8d82789e0a9b634b371b
a37778d Squashed 'src/leveldb/' changes from e2f10b4e47..688561cba8 (fanquake) Pull request description: Includes bitcoin-core/leveldb-subtree#41 which is used in bitcoin#30234. ACKs for top commit: theuni: utACK 95812d9 Tree-SHA512: 3d943695a3d33816cf5558b183f5629aa92a500a1544eecedf84952e93c8592a8cf0d554b88281fc0bad3c9e920ebcff1ed8edc12f8e73f36ed5335482beb829
… to be deterministic" b03a45b Revert "contrib: macdeploy: monkey-patch gen-sdk to be deterministic" (fanquake) Pull request description: This reverts commit ba30a54. We no-longer support Python 3.8, so remove the monkey patching. ACKs for top commit: hebasto: ACK b03a45b, I have reviewed the code and it looks OK. Tree-SHA512: 5bf68c2b332f18a620a8a6f77812ed93afa988016847bec1d3b7355670301dc957442ac47191a0cb7c3fe607d902914fb00c96345c8170f2a64429638c00b3c4
e6df348 guix: move bison from global scope, to Linux (fanquake) Pull request description: This is only needed for the Qt build (libxkbcommon), on Linux, so does not need to be built/present for the macOS or Windows builds. ACKs for top commit: hebasto: ACK e6df348. TheCharlatan: ACK e6df348 Tree-SHA512: b66111e398b4fce88f912adfd808d537e2d85e1f0078befd264bb700b201ca1bbe322810e80a212e0023657e9e3693a106761c43743d66aabd16e2afe7f599e6
9a93a65
to
c34e7ab
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK c34e7ab
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK c34e7ab
Issue being fixed or feature implemented
Batch of trivial back ports
What was done?
How Has This Been Tested?
Built locally; haven't reviewed commits yet.
Breaking Changes
Checklist:
Go over all the following points, and put an
x
in all the boxes that apply.