[30.0] Final changes + rc2 #33424

pull fanquake wants to merge 13 commits into bitcoin:30.x from fanquake:30_0_rc2 changing 24 files +203 −64
  1. fanquake commented at 10:00 am on September 18, 2025: member

    Backports:

    Finalise v30.0rc2

  2. fanquake added this to the milestone 30.0 on Sep 18, 2025
  3. DrahtBot added the label Backport on Sep 18, 2025
  4. DrahtBot commented at 10:01 am on September 18, 2025: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33424.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK willcl-ark, hebasto
    Stale ACK l0rinc

    If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

    LLM Linter (✨ experimental)

    Possible typos and grammar issues:

    • there are not “failed: Duplicate ID @0xcc316e3f71a040fb” errors. -> there are no “failed: Duplicate ID @0xcc316e3f71a040fb” errors. [“there are not … errors” is unidiomatic/grammatically awkward; “there are no … errors” is correct and clearer]

    drahtbot_id_5_m

  5. fanquake force-pushed on Sep 18, 2025
  6. fanquake force-pushed on Sep 19, 2025
  7. hebasto commented at 9:51 pm on September 19, 2025: member
    Backport #33422?
  8. fanquake closed this on Sep 20, 2025

  9. fanquake force-pushed on Sep 20, 2025
  10. fanquake reopened this on Sep 20, 2025

  11. l0rinc commented at 10:01 pm on September 22, 2025: contributor

    crACK 2db6dde838c820249178593a8d35e436ed838b82

    thank you for cherry picking these over

  12. test: Avoid interface_ipc.py Duplicate ID errors
    This change should fix issue https://github.com/bitcoin/bitcoin/issues/33417
    reported by zaidmstrr. It's possible to reproduce the `mp/proxy.capnp:0:
    failed: Duplicate ID @0xcc316e3f71a040fb` error by installing libmultiprocess
    system-wide, or to one of the locations listed in the python test's `imports`
    list before the local libmultiprocess subtree, and then running the test.
    
    Github-Pull: #33420
    Rebased-From: e9c52272ebd78d01882ac9b32b1aee8e12d87bec
    4b02bc1a72
  13. p2p: Increase tx relay rate
    In the presence of smaller transactions on the network, blocks can sustain a
    higher relay rate than 7tx/second. In this event, the per-peer inventory queues
    can grow too large.
    
    This commit bumps the rate up to 14 tx/s (for inbound peers), increasing the
    safety margin by a factor of 2.
    
    Outbound peers continue to receive relayed transactions at 2.5x the rate of
    inbound peers, for a rate of 35tx/second.
    
    Co-Authored-By: Suhas Daftuar <sdaftuar@gmail.com>
    
    Github-Pull: #28592
    Rebased-From: b81f37031c8f2ccad9346f1b65ee0f8083c44796
    1bc3be1962
  14. build(windows): Remove lingering registry entries and shortcuts upon install
    Prior releases installed using these paths. Especially annoying was that the lingering registry entry for the uninstaller would show up as "Bitcoin Core (64-bit)" besides the current "Bitcoin Core" entry in the list of installed programs, and whichever was uninstalled last would fail to work as they would default to the same install directory.
    
    Github-Pull: #33422
    Rebased-From: 79752b9c0b6bd9b2203ac98d28dd67734050c14a
    792a75ac86
  15. build: bump version to v30.0rc2 b8fb918969
  16. doc: update manual pages for v30.0rc2 0a80b1ae62
  17. system: add helper for fetching total system memory
    Added a minimal system helper to query total physical RAM on [Linux/macOS/Windows](https://stackoverflow.com/a/2513561) (on other platforms we just return an empty optional).
    
    The added test checks if the value is roughly correct by checking if the CI platforms are returning any value and if the value is at least 1 GiB and not more than 10 TiB.
    
    The max value is only validated on 64 bits, since it's not unreasonable for 32 bits to have max memory, but on 64 bits it's likely an error.
    
    https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-memorystatusex
    > ullTotalPhys The amount of actual physical memory, in bytes.
    
    https://man7.org/linux/man-pages/man3/sysconf.3.html:
    > _SC_PHYS_PAGES The number of pages of physical memory. Note that it is possible for the product of this value and the value of _SC_PAGESIZE to overflow.
    > _SC_PAGESIZE Size of a page in bytes. Must not be less than 1.
    
    See https://godbolt.org/z/ec81Tjvrj for further details
    
    Github-Pull: #33333
    Rebased-From: 6c720459beead5c825b354a1d5c11969b6e3a170
    49d4ebcbfe
  18. coins: warn on oversized -dbcache
    Oversized allocations can cause out-of-memory errors or [heavy swapping](https://github.com/getumbrel/umbrel-os/issues/64#issuecomment-663637321), [grinding the system to a halt](https://x.com/murchandamus/status/1964432335849607224).
    
    `LogOversizedDbCache()` now emits a startup warning if the configured `-dbcache` exceeds a cap derived from system RAM, using the same parsing/clamping as cache sizing via CalculateDbCacheBytes(). This isn't meant as a recommended setting, rather a likely upper limit.
    
    Note that we're not modifying the set value, just issuing a warning.
    Also note that the 75% calculation is rounded for the last two numbers since we have to divide first before multiplying, otherwise we wouldn't stay inside size_t on 32-bit systems - and this was simpler than casting back and forth.
    
    We could have chosen the remaining free memory for the warning (e.g. warn if free memory is less than 1 GiB), but this is just a heuristic, we assumed that on systems with a lot of memory, other processes are also running, while memory constrained ones run only Core.
    
    If total RAM < 2 GiB, cap is `DEFAULT_DB_CACHE` (`450 MiB`), otherwise it's 75% of total RAM.
    The threshold is chosen to be close to values commonly used in [raspiblitz](https://github.com/raspiblitz/raspiblitz/blob/dev/home.admin/_provision.setup.sh#L98-L115) for common setups:
    
    | Total RAM | `dbcache` (MiB) | raspiblitz % | proposed cap (MiB) |
    |----------:|----------------:|-------------:|-------------------:|
    |     1 GiB |             512 |        50.0% |               450* |
    |     2 GiB |            1536 |        75.0% |               1536 |
    |     4 GiB |            2560 |        62.5% |               3072 |
    |     8 GiB |            4096 |        50.0% |               6144 |
    |    16 GiB |            4096 |        25.0% |              12288 |
    |    32 GiB |            4096 |        12.5% |              24576 |
    
    [Umbrel issues](https://github.com/getumbrel/umbrel-os/issues/64#issuecomment-663816367) also mention 75% being the upper limit.
    
    Starting `bitcoind` on an 8 GiB rpi4b with a dbcache of 7 GiB:
    > ./build/bin/bitcoind -dbcache=7000
    
    warns now as follows:
    ```
    2025-09-07T17:24:29Z [warning] A 7000 MiB dbcache may be too large for a system memory of only 7800 MiB.
    2025-09-07T17:24:29Z Cache configuration:
    2025-09-07T17:24:29Z * Using 2.0 MiB for block index database
    2025-09-07T17:24:29Z * Using 8.0 MiB for chain state database
    2025-09-07T17:24:29Z * Using 6990.0 MiB for in-memory UTXO set (plus up to 286.1 MiB of unused mempool space)
    ```
    
    Besides the [godbolt](https://godbolt.org/z/EPsaE3xTj) reproducers for the new total memory method, we also tested the warnings manually on:
    - [x] Apple M4 Max, macOS 15.6.1
    - [x] Intel Core i9-9900K, Ubuntu 24.04.2 LTS
    - [x] Raspberry Pi 4 Model B, Armbian Linux 6.12.22-current-bcm2711
    - [x] Intel Xeon x64, Windows 11 Home Version 24H2, OS Build 26100.4351
    
    Co-authored-by: stickies-v <stickies-v@protonmail.com>
    Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com>
    Co-authored-by: w0xlt <woltx@protonmail.com>
    
    Github-Pull: #33333
    Rebased-From: 168360f4ae47cbfdb30a2cc4704435bc67e12f16
    5226a92f28
  19. system: improve handling around GetTotalRAM()
    This patch achieves two things:
    1. Fix unused variable warning (https://github.com/bitcoin/bitcoin/pull/33333#discussion_r2362493046)
    2. Enable GetTotalRAM() on other platforms where it was tested to work.
    
    Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
    
    Github-Pull: #33435
    Rebased-From: 337a6e738616781f81504275bac8ed7bcf8068df
    ce56548c63
  20. test: split out `system_ram_tests` to signal when total ram cannot be determined
    when `GetTotalRAM` returns an `std::nullopt` now we're getting:
    ```
    The following tests did not run:
            106 - system_ram_tests (Skipped)
    ```
    
    GitHub-Pull: #33435
    Rebased-From: 56791b582958e905e5ba5cbf172a8ea7dad1a8b0
    acf7d53ace
  21. ci: refactor docker action to return provider str
    Avoid relying on future truthy evaluations of string 'false'.
    
    Github-Pull: #33302
    Rebased-From: ff18b6bbaf322739fe98fd51b0d89d65a5775ab5
    2378bbf356
  22. ci: disable cirrus cache in 32bit arm job
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    Add an optional matrix field allowing opt-out of configuring cirrus
    GHA cache when not using cirrus runners.
    
    This is not needed for the cirruslabs/[save|restore]-cache actions, as
    they automatically fallback based on runner type.
    
    Github-Pull: #33302
    Rebased-From: 00c253d494176b31dc4aaba24dc7e61aecb20be2
    8c973d6614
  23. doc: remove unrelated `bitcoin-wallet` binary from `libbitcoin_ipc` description
    `bitcoin-wallet` as-is is merely an offline wallet inspection tool
    (introduced more than 9 years ago in PR #13926) that doesn't have any
    relation with IPC/multiprocess, so remove it from the list of binaries
    that use `libbitcoin_ipc`.
    
    Github-Pull: #33459
    Rebased-From: fbde8d9a81d82e53933fe45e36d3a70206a48e0e
    ecbcef33d6
  24. ci: link against -lstdc++ in native fuzz with msan job
    Github-Pull: #33425
    Rebased-From: b77137a5644e09a08442aed7d8a4a9290fb53526
    7ebdfa2173
  25. fanquake force-pushed on Sep 23, 2025
  26. fanquake marked this as ready for review on Sep 23, 2025
  27. willcl-ark approved
  28. willcl-ark commented at 7:47 pm on September 23, 2025: member

    ACK 7ebdfa2173b90faad71057d37b6b71c462dd3ea1

    Backports are clean.

    None added to release notes, but I don’t think any particularly need to be (#33333 could be the only potential candidate here IMO).

  29. DrahtBot requested review from l0rinc on Sep 23, 2025
  30. hebasto approved
  31. hebasto commented at 9:43 pm on September 23, 2025: member
    ACK 7ebdfa2173b90faad71057d37b6b71c462dd3ea1, I applied all backports locally without conflicts and obtained a zero diff with this PR branch.
  32. fanquake merged this on Sep 23, 2025
  33. fanquake closed this on Sep 23, 2025

  34. fanquake deleted the branch on Sep 23, 2025


fanquake DrahtBot hebasto l0rinc willcl-ark


l0rinc

Labels
Backport

Milestone
30.0


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-09-26 15:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me