[29.x] backports and 29.0rc3 #32136

pull glozow wants to merge 7 commits into bitcoin:29.x from glozow:2025-03-29.0rc3 changing 14 files +49 −45
  1. glozow commented at 2:36 pm on March 25, 2025: member

    Backports + final changes for 29.0rc3.

    Backports:

  2. test: avoid disk space warning for non-regtest
    feature_config_args.py incorrectly assumed that its testnet4 node
    would not log a disk space warning.
    
    0683b8ebf33386d5c05140df89df10b1853d7c7e increased m_assumed_blockchain_size
    on testnet4 from 1 to 11 GiB which triggers this bug on more
    systems, e.g. a RAM disk.
    
    Prevent the warning by setting -prune for these nodes.
    
    Fix the same issue in feature_signet.py
    
    Github-Pull: #32057
    Rebased-From: 20fe41e9e83d510fd467f5a999d55a614b16ef89
    a3060483fa
  3. glozow added the label Backport on Mar 25, 2025
  4. DrahtBot commented at 2:36 pm on March 25, 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/32136.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK hebasto, fanquake

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

  5. glozow added this to the milestone 29.0 on Mar 25, 2025
  6. fuzz: Fix off-by-one in package_rbf target
    Github-Pull: #32122
    Rebased-From: fa5674c264d91eb3a99fa74ace8a1b6be113c0a8
    288163ea0f
  7. fuzz: extract unsequenced operations with side-effects
    https://github.com/bitcoin/bitcoin/pull/30746#discussion_r1817851827 introduced an unsequenced operations with side-effects - which is undefined behavior, i.e. the right hand side can be evaluated before the left hand side, which happens to mutate it.
    
    Tried:
    ```
    clang++ --analyze -std=c++20 -I./src -I./src/test -I./src/test/fuzz src/test/fuzz/base_encode_decode.cpp src/psbt.cpp
    ```
    but it didn't warn about UB.
    
    Grepped for similar ones, but could find any other one in the codebase:
    > grep -rnE --include='*.cpp' --include='*.h' '\b(\w+)\(([^)]*\b(\w+)\b[^)]*)\)\s*==\s*\3\.' .
    ```
    ./src/test/arith_uint256_tests.cpp:373:    BOOST_CHECK(R1L.GetHex() == R1L.ToString());
    ./src/test/arith_uint256_tests.cpp:374:    BOOST_CHECK(R2L.GetHex() == R2L.ToString());
    ./src/test/arith_uint256_tests.cpp:375:    BOOST_CHECK(OneL.GetHex() == OneL.ToString());
    ./src/test/arith_uint256_tests.cpp:376:    BOOST_CHECK(MaxL.GetHex() == MaxL.ToString());
    ./src/test/fuzz/cluster_linearize.cpp:565:        assert(depgraph.FeeRate(best_anc.transactions) == best_anc.feerate);
    ./src/test/fuzz/cluster_linearize.cpp:646:        assert(depgraph.FeeRate(found.transactions) == found.feerate);
    ./src/test/fuzz/cluster_linearize.cpp:765:            assert(depgraph.FeeRate(chunk_info.transactions) == chunk_info.feerate);
    ./src/test/fuzz/base_encode_decode.cpp:95:    assert(DecodeBase64PSBT(psbt, random_string, error) == error.empty());
    ./src/test/fuzz/key.cpp:102:        assert(pubkey.data() == pubkey.begin());
    ./src/test/skiplist_tests.cpp:42:        BOOST_CHECK(vIndex[from].GetAncestor(0) == vIndex.data());
    ./src/script/signingprovider.cpp:535:                   ComputeTapbranchHash(node.sub[1]->hash, node.sub[1]->hash) == node.hash) {
    ./src/pubkey.h:78:      return vch.size() > 0 && GetLen(vch[0]) == vch.size();
    ./src/cluster_linearize.h:881:            Assume(elem.inc.feerate.IsEmpty() == elem.pot_feerate.IsEmpty());
    ```
    
    Hodlinator deduced the UB on Windows in https://github.com/bitcoin/bitcoin/issues/32135#issuecomment-2751723855
    
    Github-Pull: #32141
    Rebased-From: b1de59e8965354fff5a149bc0fe61ed0704aea7a
    
    Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com>
    7bc7af9951
  8. cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags
    Use it for checking `-fsanitize`.
    
    This change improves the user experience when the configuration step
    fails due to a missing library. Now, there is no need to manually clean
    the CMake cache after installing the required library.
    
    Github-Pull: #32027
    Rebased-From: 52ac17757eed5056d03a6861bcc24ee864c17385
    477345207b
  9. depends: set CMAKE_*_COMPILER_TARGET in toolchain
    According to the CMake docs, this is the correct way to setup a
    toolchain file for cross-compilation using Clang. See
    https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-using-clang
    
    Internally it looks like CMake will only take this variable into account
    if it detects the compiler to be Clang, so this shouldn't effect other
    builds, but in the case of our Apple cross builds, we'd end up with a
    duplicated `--target=arm64-apple-darwin` on the compiler line, given we
    are already setting `--target` for Darwin builds.
    
    Would fix #31748.
    
    Github-Pull: #31849
    Rebased-From: 963355037fe78eb4fbdda8631ac05a7b07fcec8c
    c0756b758f
  10. [build] bump to 29.0rc3 7c05ef5673
  11. [doc] update man pages for 29.0rc3 f80ab9a5d8
  12. glozow marked this as ready for review on Mar 31, 2025
  13. hebasto approved
  14. hebasto commented at 10:31 am on April 1, 2025: member
    ACK f80ab9a5d8cd5418655fe1a6f01c77926e2cc2e5, I’ve verified back-ports locally and reviewed release related changes.
  15. fanquake approved
  16. fanquake commented at 11:59 am on April 1, 2025: member
    ACK f80ab9a5d8cd5418655fe1a6f01c77926e2cc2e5
  17. fanquake merged this on Apr 1, 2025
  18. fanquake closed this on Apr 1, 2025

  19. glozow deleted the branch on Apr 1, 2025

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-04-18 00:12 UTC

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