guix: use GCC 14.3.0 over 13.3.0 #33775

pull fanquake wants to merge 7 commits into bitcoin:master from fanquake:guix_gcc_14 changing 8 files +75 −10
  1. fanquake commented at 1:12 pm on November 4, 2025: member
    Switching to using GCC 14.x for release builds has come up multiple times recently. It will eventually be needed for #25573, and could also be useful for #30210.
  2. DrahtBot added the label Build system on Nov 4, 2025
  3. DrahtBot commented at 1:13 pm on November 4, 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/33775.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK hebasto, theuni, sedited
    Stale ACK maflcko

    If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #33593 (guix: Use UCRT runtime for Windows release binaries by hebasto)
    • #32764 (guix: Build for macOS using Clang only by hebasto)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  4. hebasto commented at 1:13 pm on November 4, 2025: member
    Concept ACK.
  5. in contrib/guix/manifest.scm:99 in 9bebdf6303 outdated
     92@@ -93,7 +93,17 @@ chain for " target " development."))
     93       (home-page (package-home-page xgcc))
     94       (license (package-license xgcc)))))
     95 
     96-(define base-gcc gcc-13) ;; 13.3.0
     97+(define base-gcc
     98+  (package
     99+    (inherit gcc-14) ;; 14.2.0
    100+    (version "14.3.0")
    


    hebasto commented at 1:18 pm on November 4, 2025:

    Why 14.3.0 specifically, and not 14.2.0?

    (asking because 14.2.x is mentioned in https://gist.github.com/hebasto/dee3c918da49ee767ccf5eea43276407).


    fanquake commented at 1:51 pm on November 4, 2025:
    I’d rather we use the version of the compiler with more bug fixes, and less known bugs.

    hebasto commented at 11:57 pm on December 8, 2025:
    Why not use the same minor version for both gcc-14 and gcc-toolchain-14 packages?

    fanquake commented at 5:29 pm on December 10, 2025:
    It shouldn’t make any difference, for building host tools. It also seems non-trivial to swap out the version in gcc-toolchain-14.
  6. DrahtBot added the label CI failed on Nov 4, 2025
  7. DrahtBot removed the label CI failed on Nov 4, 2025
  8. fanquake force-pushed on Nov 4, 2025
  9. in ci/test/00_setup_env_arm.sh:13 in 4bcc7824cd
     9@@ -10,7 +10,7 @@ export HOST=arm-linux-gnueabihf
    10 export DPKG_ADD_ARCH="armhf"
    11 export PACKAGES="python3-zmq g++-arm-linux-gnueabihf busybox libc6:armhf libstdc++6:armhf libfontconfig1:armhf libxcb1:armhf"
    12 export CONTAINER_NAME=ci_arm_linux
    13-export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"  # Check that https://packages.ubuntu.com/noble/g++-arm-linux-gnueabihf (version 13.x, similar to guix) can cross-compile
    14+export CI_IMAGE_NAME_TAG="mirror.gcr.io/debian:trixie"  # Check that https://packages.ubuntu.com/noble/g++-arm-linux-gnueabihf (version 14.x, similar to guix) can cross-compile
    


    maflcko commented at 8:03 am on November 5, 2025:
    url is wrong, and the maybe-uninitialized below can be removed?

    fanquake commented at 10:07 am on November 5, 2025:

    and the maybe-uninitialized below can be removed?

    Fixed the URL, I don’t think we can drop it yet: https://github.com/bitcoin/bitcoin/actions/runs/19074211079/job/54485090675?pr=33775#step:8:3723.

  10. maflcko commented at 8:06 am on November 5, 2025: member
    concept ack. 14.3 should be sufficiently propagated and tested by now, to rely on it for release builds
  11. fanquake force-pushed on Nov 5, 2025
  12. maflcko commented at 10:47 am on November 5, 2025: member
    lgtm ACK 25ede968badadfeeaaa8358b38c9a8cfff7189f0
  13. DrahtBot requested review from hebasto on Nov 5, 2025
  14. fanquake marked this as ready for review on Nov 5, 2025
  15. maflcko added the label DrahtBot Guix build requested on Nov 5, 2025
  16. fanquake commented at 2:33 pm on November 5, 2025: member

    Guix Build (x86_64):

     06c31a0f19daec94c3d629e50d6bc2461ceb6e0fbb0823cb10a40bc735e37f9b5  guix-build-25ede968bada/output/aarch64-linux-gnu/SHA256SUMS.part
     1f3ba2f0c5f1d99d377ea11ea2b9983187192d733c7db444060d112d1be48ecd2  guix-build-25ede968bada/output/aarch64-linux-gnu/bitcoin-25ede968bada-aarch64-linux-gnu-debug.tar.gz
     2321db43f3a4327287813274b7f9874fb76799643fdc9cbbc9ee13bce10b6e004  guix-build-25ede968bada/output/aarch64-linux-gnu/bitcoin-25ede968bada-aarch64-linux-gnu.tar.gz
     358f449098f98b7746c2ba9286a3582852aed3c32b3cc0327598c279d46eab5b7  guix-build-25ede968bada/output/arm-linux-gnueabihf/SHA256SUMS.part
     40c51f7872d5f65ad2bd432d20f76c49b8e2dc765cacb53f696b0a0c5ea91b56b  guix-build-25ede968bada/output/arm-linux-gnueabihf/bitcoin-25ede968bada-arm-linux-gnueabihf-debug.tar.gz
     54f679e6074c745b2e91494721a6c8aa0ef24e19f18a3971ac53913441fdbf399  guix-build-25ede968bada/output/arm-linux-gnueabihf/bitcoin-25ede968bada-arm-linux-gnueabihf.tar.gz
     68a66a9d3180f8fa386a0fdfc4ed1b80c716ec9b754921c35543cdc822ea35bf9  guix-build-25ede968bada/output/arm64-apple-darwin/SHA256SUMS.part
     7cbbffbb237ca4a0174f457824a21412334d7ce7c1931c78fe293520029e97c32  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-codesigning.tar.gz
     8518312fec80b309a38393a7408cad0fda28f4cf7b52d08a5b4c2d1a26ea9b8d4  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-unsigned.tar.gz
     95a36a5ddea0070e3efd6e3db92528705483a2dd4ebc9287ed42c3d180537092a  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-unsigned.zip
    10768446c9e4037d07b76df5379ff42482e2ce264db5e0ed61694af0c7ea49cd69  guix-build-25ede968bada/output/dist-archive/bitcoin-25ede968bada.tar.gz
    11a85baf46acec900f79b9343f9bd918731bfc0f1fea7586b902f28e99cda59e37  guix-build-25ede968bada/output/powerpc64-linux-gnu/SHA256SUMS.part
    12c01ac68acbdae911b56a6b3eb1762d9f57d4d7fc0dbedfa3f4c0905bf4be6853  guix-build-25ede968bada/output/powerpc64-linux-gnu/bitcoin-25ede968bada-powerpc64-linux-gnu-debug.tar.gz
    13f08b8d0909eb6f6a7f4b483f338655b0c44ee85c219360b62c99165df5aed157  guix-build-25ede968bada/output/powerpc64-linux-gnu/bitcoin-25ede968bada-powerpc64-linux-gnu.tar.gz
    14a2e1c4960965d6315e3c89579b7224970229d01f1c9b60ff8ec1698a1bebb884  guix-build-25ede968bada/output/riscv64-linux-gnu/SHA256SUMS.part
    156b4958341f9648ddaf7c57a788db7b229d6be4cc7f9548f3acd84c2ce990909a  guix-build-25ede968bada/output/riscv64-linux-gnu/bitcoin-25ede968bada-riscv64-linux-gnu-debug.tar.gz
    162f03dcd2941388cecb4c7ae1d8e0b925e0bcc1c0f79f6676906b88ed3f98c1e0  guix-build-25ede968bada/output/riscv64-linux-gnu/bitcoin-25ede968bada-riscv64-linux-gnu.tar.gz
    17a8b021adae39e2f9beaa37e6fa370eaa6fac033505cdfe8fdfcb01f6b6786ce1  guix-build-25ede968bada/output/x86_64-apple-darwin/SHA256SUMS.part
    1810cd32f7b51cca2473d4c1a92cde51914ec36e5d90d46c623047b0bd4a6171ce  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-codesigning.tar.gz
    19dfde14c907e39b547681600cf0a1056f88d4e26d67bda66bb0ebdacaa77755bb  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-unsigned.tar.gz
    203a69e45b82a8397d4638ca3cf08d436f7fffa3ebab4a664ae5785b0e02726ed5  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-unsigned.zip
    21f490dc45e3401815c252e4f818d266a6076e225e17f8a83a64d0919f2ca419fd  guix-build-25ede968bada/output/x86_64-linux-gnu/SHA256SUMS.part
    22de096f32dd1396195723db299ae8f299f9a8a425f45a79f9414184b4ec98c252  guix-build-25ede968bada/output/x86_64-linux-gnu/bitcoin-25ede968bada-x86_64-linux-gnu-debug.tar.gz
    231f035fbdcda7e22390b4dc89dfc765f98a01f95d3f39faf8a34be51c6dd4bb9f  guix-build-25ede968bada/output/x86_64-linux-gnu/bitcoin-25ede968bada-x86_64-linux-gnu.tar.gz
    2450437f34b662a2cf0dc55c6d54b8a74b19d5fcc02380490e1a5a6347a4c2520c  guix-build-25ede968bada/output/x86_64-w64-mingw32/SHA256SUMS.part
    25780df1f42e33f6d5203b818bc0081c7a420878de274295cebb4668f54653a735  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-codesigning.tar.gz
    268eec58e81a5a3f072c8ba2ec39cde884f725e0ce3a295dd8f0b37710c0874682  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-debug.zip
    27b7d9273ef4d2edf723442bedc570af20efa218afcd7cc85cfd66be065c3f6e58  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-setup-unsigned.exe
    2868a88570939913939f411cfd11e0f0d3260970c4767490b227d94a417f9a55db  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-unsigned.zip
    
  17. willcl-ark commented at 2:36 pm on November 5, 2025: member
     0src/core/bitcoin on  pr-33775 [$?] via △ v3.31.6 via 🐍 v3.13.5 via ❄️  impure (nix-shell-env)
     1❯ uname -m; find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
     2x86_64
     36c31a0f19daec94c3d629e50d6bc2461ceb6e0fbb0823cb10a40bc735e37f9b5  guix-build-25ede968bada/output/aarch64-linux-gnu/SHA256SUMS.part
     4f3ba2f0c5f1d99d377ea11ea2b9983187192d733c7db444060d112d1be48ecd2  guix-build-25ede968bada/output/aarch64-linux-gnu/bitcoin-25ede968bada-aarch64-linux-gnu-debug.tar.gz
     5321db43f3a4327287813274b7f9874fb76799643fdc9cbbc9ee13bce10b6e004  guix-build-25ede968bada/output/aarch64-linux-gnu/bitcoin-25ede968bada-aarch64-linux-gnu.tar.gz
     658f449098f98b7746c2ba9286a3582852aed3c32b3cc0327598c279d46eab5b7  guix-build-25ede968bada/output/arm-linux-gnueabihf/SHA256SUMS.part
     70c51f7872d5f65ad2bd432d20f76c49b8e2dc765cacb53f696b0a0c5ea91b56b  guix-build-25ede968bada/output/arm-linux-gnueabihf/bitcoin-25ede968bada-arm-linux-gnueabihf-debug.tar.gz
     84f679e6074c745b2e91494721a6c8aa0ef24e19f18a3971ac53913441fdbf399  guix-build-25ede968bada/output/arm-linux-gnueabihf/bitcoin-25ede968bada-arm-linux-gnueabihf.tar.gz
     98a66a9d3180f8fa386a0fdfc4ed1b80c716ec9b754921c35543cdc822ea35bf9  guix-build-25ede968bada/output/arm64-apple-darwin/SHA256SUMS.part
    10cbbffbb237ca4a0174f457824a21412334d7ce7c1931c78fe293520029e97c32  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-codesigning.tar.gz
    11518312fec80b309a38393a7408cad0fda28f4cf7b52d08a5b4c2d1a26ea9b8d4  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-unsigned.tar.gz
    125a36a5ddea0070e3efd6e3db92528705483a2dd4ebc9287ed42c3d180537092a  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-unsigned.zip
    13768446c9e4037d07b76df5379ff42482e2ce264db5e0ed61694af0c7ea49cd69  guix-build-25ede968bada/output/dist-archive/bitcoin-25ede968bada.tar.gz
    14a85baf46acec900f79b9343f9bd918731bfc0f1fea7586b902f28e99cda59e37  guix-build-25ede968bada/output/powerpc64-linux-gnu/SHA256SUMS.part
    15c01ac68acbdae911b56a6b3eb1762d9f57d4d7fc0dbedfa3f4c0905bf4be6853  guix-build-25ede968bada/output/powerpc64-linux-gnu/bitcoin-25ede968bada-powerpc64-linux-gnu-debug.tar.gz
    16f08b8d0909eb6f6a7f4b483f338655b0c44ee85c219360b62c99165df5aed157  guix-build-25ede968bada/output/powerpc64-linux-gnu/bitcoin-25ede968bada-powerpc64-linux-gnu.tar.gz
    17a2e1c4960965d6315e3c89579b7224970229d01f1c9b60ff8ec1698a1bebb884  guix-build-25ede968bada/output/riscv64-linux-gnu/SHA256SUMS.part
    186b4958341f9648ddaf7c57a788db7b229d6be4cc7f9548f3acd84c2ce990909a  guix-build-25ede968bada/output/riscv64-linux-gnu/bitcoin-25ede968bada-riscv64-linux-gnu-debug.tar.gz
    192f03dcd2941388cecb4c7ae1d8e0b925e0bcc1c0f79f6676906b88ed3f98c1e0  guix-build-25ede968bada/output/riscv64-linux-gnu/bitcoin-25ede968bada-riscv64-linux-gnu.tar.gz
    20a8b021adae39e2f9beaa37e6fa370eaa6fac033505cdfe8fdfcb01f6b6786ce1  guix-build-25ede968bada/output/x86_64-apple-darwin/SHA256SUMS.part
    2110cd32f7b51cca2473d4c1a92cde51914ec36e5d90d46c623047b0bd4a6171ce  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-codesigning.tar.gz
    22dfde14c907e39b547681600cf0a1056f88d4e26d67bda66bb0ebdacaa77755bb  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-unsigned.tar.gz
    233a69e45b82a8397d4638ca3cf08d436f7fffa3ebab4a664ae5785b0e02726ed5  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-unsigned.zip
    24f490dc45e3401815c252e4f818d266a6076e225e17f8a83a64d0919f2ca419fd  guix-build-25ede968bada/output/x86_64-linux-gnu/SHA256SUMS.part
    25de096f32dd1396195723db299ae8f299f9a8a425f45a79f9414184b4ec98c252  guix-build-25ede968bada/output/x86_64-linux-gnu/bitcoin-25ede968bada-x86_64-linux-gnu-debug.tar.gz
    261f035fbdcda7e22390b4dc89dfc765f98a01f95d3f39faf8a34be51c6dd4bb9f  guix-build-25ede968bada/output/x86_64-linux-gnu/bitcoin-25ede968bada-x86_64-linux-gnu.tar.gz
    2750437f34b662a2cf0dc55c6d54b8a74b19d5fcc02380490e1a5a6347a4c2520c  guix-build-25ede968bada/output/x86_64-w64-mingw32/SHA256SUMS.part
    28780df1f42e33f6d5203b818bc0081c7a420878de274295cebb4668f54653a735  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-codesigning.tar.gz
    298eec58e81a5a3f072c8ba2ec39cde884f725e0ce3a295dd8f0b37710c0874682  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-debug.zip
    30b7d9273ef4d2edf723442bedc570af20efa218afcd7cc85cfd66be065c3f6e58  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-setup-unsigned.exe
    3168a88570939913939f411cfd11e0f0d3260970c4767490b227d94a417f9a55db  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-unsigned.zip
    
  18. fanquake commented at 3:13 pm on November 5, 2025: member

    Windows is non-deterministic across x86_64 && aarch64. Guix build (aarch64):

     06c31a0f19daec94c3d629e50d6bc2461ceb6e0fbb0823cb10a40bc735e37f9b5  guix-build-25ede968bada/output/aarch64-linux-gnu/SHA256SUMS.part
     1f3ba2f0c5f1d99d377ea11ea2b9983187192d733c7db444060d112d1be48ecd2  guix-build-25ede968bada/output/aarch64-linux-gnu/bitcoin-25ede968bada-aarch64-linux-gnu-debug.tar.gz
     2321db43f3a4327287813274b7f9874fb76799643fdc9cbbc9ee13bce10b6e004  guix-build-25ede968bada/output/aarch64-linux-gnu/bitcoin-25ede968bada-aarch64-linux-gnu.tar.gz
     358f449098f98b7746c2ba9286a3582852aed3c32b3cc0327598c279d46eab5b7  guix-build-25ede968bada/output/arm-linux-gnueabihf/SHA256SUMS.part
     40c51f7872d5f65ad2bd432d20f76c49b8e2dc765cacb53f696b0a0c5ea91b56b  guix-build-25ede968bada/output/arm-linux-gnueabihf/bitcoin-25ede968bada-arm-linux-gnueabihf-debug.tar.gz
     54f679e6074c745b2e91494721a6c8aa0ef24e19f18a3971ac53913441fdbf399  guix-build-25ede968bada/output/arm-linux-gnueabihf/bitcoin-25ede968bada-arm-linux-gnueabihf.tar.gz
     68a66a9d3180f8fa386a0fdfc4ed1b80c716ec9b754921c35543cdc822ea35bf9  guix-build-25ede968bada/output/arm64-apple-darwin/SHA256SUMS.part
     7cbbffbb237ca4a0174f457824a21412334d7ce7c1931c78fe293520029e97c32  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-codesigning.tar.gz
     8518312fec80b309a38393a7408cad0fda28f4cf7b52d08a5b4c2d1a26ea9b8d4  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-unsigned.tar.gz
     95a36a5ddea0070e3efd6e3db92528705483a2dd4ebc9287ed42c3d180537092a  guix-build-25ede968bada/output/arm64-apple-darwin/bitcoin-25ede968bada-arm64-apple-darwin-unsigned.zip
    10768446c9e4037d07b76df5379ff42482e2ce264db5e0ed61694af0c7ea49cd69  guix-build-25ede968bada/output/dist-archive/bitcoin-25ede968bada.tar.gz
    11a85baf46acec900f79b9343f9bd918731bfc0f1fea7586b902f28e99cda59e37  guix-build-25ede968bada/output/powerpc64-linux-gnu/SHA256SUMS.part
    12c01ac68acbdae911b56a6b3eb1762d9f57d4d7fc0dbedfa3f4c0905bf4be6853  guix-build-25ede968bada/output/powerpc64-linux-gnu/bitcoin-25ede968bada-powerpc64-linux-gnu-debug.tar.gz
    13f08b8d0909eb6f6a7f4b483f338655b0c44ee85c219360b62c99165df5aed157  guix-build-25ede968bada/output/powerpc64-linux-gnu/bitcoin-25ede968bada-powerpc64-linux-gnu.tar.gz
    14a2e1c4960965d6315e3c89579b7224970229d01f1c9b60ff8ec1698a1bebb884  guix-build-25ede968bada/output/riscv64-linux-gnu/SHA256SUMS.part
    156b4958341f9648ddaf7c57a788db7b229d6be4cc7f9548f3acd84c2ce990909a  guix-build-25ede968bada/output/riscv64-linux-gnu/bitcoin-25ede968bada-riscv64-linux-gnu-debug.tar.gz
    162f03dcd2941388cecb4c7ae1d8e0b925e0bcc1c0f79f6676906b88ed3f98c1e0  guix-build-25ede968bada/output/riscv64-linux-gnu/bitcoin-25ede968bada-riscv64-linux-gnu.tar.gz
    17a8b021adae39e2f9beaa37e6fa370eaa6fac033505cdfe8fdfcb01f6b6786ce1  guix-build-25ede968bada/output/x86_64-apple-darwin/SHA256SUMS.part
    1810cd32f7b51cca2473d4c1a92cde51914ec36e5d90d46c623047b0bd4a6171ce  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-codesigning.tar.gz
    19dfde14c907e39b547681600cf0a1056f88d4e26d67bda66bb0ebdacaa77755bb  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-unsigned.tar.gz
    203a69e45b82a8397d4638ca3cf08d436f7fffa3ebab4a664ae5785b0e02726ed5  guix-build-25ede968bada/output/x86_64-apple-darwin/bitcoin-25ede968bada-x86_64-apple-darwin-unsigned.zip
    21f490dc45e3401815c252e4f818d266a6076e225e17f8a83a64d0919f2ca419fd  guix-build-25ede968bada/output/x86_64-linux-gnu/SHA256SUMS.part
    22de096f32dd1396195723db299ae8f299f9a8a425f45a79f9414184b4ec98c252  guix-build-25ede968bada/output/x86_64-linux-gnu/bitcoin-25ede968bada-x86_64-linux-gnu-debug.tar.gz
    231f035fbdcda7e22390b4dc89dfc765f98a01f95d3f39faf8a34be51c6dd4bb9f  guix-build-25ede968bada/output/x86_64-linux-gnu/bitcoin-25ede968bada-x86_64-linux-gnu.tar.gz
    24a290a73521d2c2e39a72fe370a41c54d1e154dd96f9d7f9573c8fc2bf9a467ac  guix-build-25ede968bada/output/x86_64-w64-mingw32/SHA256SUMS.part
    2586dd7a5f478f2878c3e6e6521395e06cc084ed60e56b99caa51abbac6dffa20c  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-codesigning.tar.gz
    268eec58e81a5a3f072c8ba2ec39cde884f725e0ce3a295dd8f0b37710c0874682  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-debug.zip
    2763069bfc67f7560b5503a355b3f8e3bd4584c41292c37aa7aa88126a87e8463a  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-setup-unsigned.exe
    287417cb50480fd5006fb8d9e47e4564929398f62860f6829930abd978ca32505b  guix-build-25ede968bada/output/x86_64-w64-mingw32/bitcoin-25ede968bada-win64-unsigned.zip
    
  19. DrahtBot commented at 0:43 am on November 7, 2025: contributor

    Guix builds (on x86_64) [untrusted test-only build, possibly unsafe, not for production use]

    File commit 50d106a4d6acaa0f10548f9a542dd3f83dfd7e01(master) commit 768f3f3d84c5d4854844ddb3de2372a54219a4aa(pull/33775/merge)
    *-aarch64-linux-gnu-debug.tar.gz ad364abf85c33224... 36593cb9a3295fbb...
    *-aarch64-linux-gnu.tar.gz e4747bcb603e9d22... 499f1058095ecd74...
    *-arm-linux-gnueabihf-debug.tar.gz 46cdab38307b063d... f4170b1241c89728...
    *-arm-linux-gnueabihf.tar.gz 2609ba76281c224e... e01c9ac71d328170...
    *-arm64-apple-darwin-codesigning.tar.gz 6f4fbb4c20bd1ee5... 885e0341fe7c8d1d...
    *-arm64-apple-darwin-unsigned.tar.gz 64438ffa1d21c8bc... 4d2c1ef8611abcc4...
    *-arm64-apple-darwin-unsigned.zip e277424cc1f03706... d0404b42c1f537d2...
    *-powerpc64-linux-gnu-debug.tar.gz ad3e84af57784a31... 840a2f06a929c0a6...
    *-powerpc64-linux-gnu.tar.gz 7da671ecf2906b5f... 07121376f7622c47...
    *-riscv64-linux-gnu-debug.tar.gz 7cb690ed10d887b7... 35aa84f5f41fe1a7...
    *-riscv64-linux-gnu.tar.gz dfee1ec9aa36781f... b810df486ddd2760...
    *-x86_64-apple-darwin-codesigning.tar.gz a8a9fb59f0bb2990... c2a4b435fb9e36b1...
    *-x86_64-apple-darwin-unsigned.tar.gz 905c6df93a71771a... e1c0938eca39a917...
    *-x86_64-apple-darwin-unsigned.zip 0b5455e26aaeb71d... 622962d3489ac954...
    *-x86_64-linux-gnu-debug.tar.gz 82fa3fbc36f0b4dd... 414de2dd4318646f...
    *-x86_64-linux-gnu.tar.gz c3eaf5985b80144b... 51de4bcb2b017d53...
    *.tar.gz 9cacbb82e4362de8... 0968f412a1730028...
    SHA256SUMS.part cb6d670feb127136... 10a71a56d4875acc...
    guix_build.log b1fd8fa48f3dc5a0... bb12b235619992e3...
    guix_build.log.diff 326c5888cb327897...
  20. DrahtBot removed the label DrahtBot Guix build requested on Nov 7, 2025
  21. fanquake force-pushed on Nov 10, 2025
  22. fanquake force-pushed on Nov 10, 2025
  23. DrahtBot added the label CI failed on Nov 10, 2025
  24. DrahtBot removed the label CI failed on Nov 10, 2025
  25. fanquake force-pushed on Nov 11, 2025
  26. fanquake force-pushed on Nov 11, 2025
  27. willcl-ark commented at 10:16 am on November 12, 2025: member

    I get a guix build failure @ 758da5a5732:

     0g++ -pie -Wl,-z,now   -g -O2     -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -pie -Wl,-z,now -static-libstdc++ -static-libgcc  -o Tcollect2 \
     1        collect2.o collect2-aix.o vec.o ggc-none.o collect-utils.o file-find.o hash-table.o selftest.o libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/pic/libiberty.a ../libdecnumber/libdecnumber.a
     2ld: ../libbacktrace/.libs/libbacktrace.a(backtrace.o): relocation R_X86_64_32 against `.text' can not be used when making a PIE object; recompile with -fPIE
     3ld: failed to set dynamic section sizes: bad value
     4collect2: error: ld returned 1 exit status
     5make[2]: *** [Makefile:2409: collect2] Error 1
     6make[2]: *** Waiting for unfinished jobs....
     7make[2]: Leaving directory '/tmp/guix-build-gcc-cross-sans-libc-x86_64-linux-gnu-14.3.0.drv-0/build/gcc'
     8make[1]: *** [Makefile:4673: all-gcc] Error 2
     9make[1]: Leaving directory '/tmp/guix-build-gcc-cross-sans-libc-x86_64-linux-gnu-14.3.0.drv-0/build'
    10make: *** [Makefile:1040: all] Error 2
    11error: in phase 'build': uncaught exception:
    12%exception #<&invoke-error program: "make" arguments: ("-j" "16" "CFLAGS=-g0 -O2") exit-status: 2 term-signal: #f stop-signal: #f>
    13phase `build' failed after 242.0 seconds
    14command "make" "-j" "16" "CFLAGS=-g0 -O2" failed with status 2
    15build process 18 exited with status 256
    
  28. fanquake force-pushed on Nov 12, 2025
  29. janb84 commented at 1:54 pm on November 12, 2025: contributor

    Same got build failure (2x) at 758da5a5732433807f1d9c8f043de934982218ab

    0/ 'build' phasenote: keeping build directory `/tmp/guix-build-gcc-cross-x86_64-w64-mingw32-14.3.0.drv-0'
    1builder for `/gnu/store/akfhrz7dsfj133vqrdr79ipdhgvc5352-gcc-cross-x86_64-w64-mingw32-14.3.0.drv' failed with 1
    2build of /gnu/store/akfhrz7dsfj133vqrdr79ipdhgvc5352-gcc-cross-x86_64-w64-mingw32-14.3.0.drv failed
    3View build log at '/var/log/guix/drvs/ak/fhrz7dsfj133vqrdr79ipdhgvc5352-gcc-cross-x86_64-w64-mingw32-14.3.0.dr.
    4cannot build derivation `/gnu/store/nv2hxwckv673i17w54bzyr2y3ascg5pd-profile.drv': 1 dependencies couldn't be t
    5guix shell: error: build of `/gnu/store/nv2hxwckv673i17w54bzyr2y3ascg5pd-profile.drv' failed
    

    Mentioned log: fhrz7dsfj133vqrdr79ipdhgvc5352-gcc-cross-x86_64-w64-mingw32-14.3.0.drv.gz

  30. willcl-ark commented at 2:17 pm on November 12, 2025: member

    Without the new flags I get:

     0core/worktrees/pr-33775 on  pr-33775 [$] via △ v3.31.6 via 🐍 v3.13.5 via ❄️  impure (nix-shell-env) took 3h44m19s
     1❯ uname -m; find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
     2x86_64
     336feb0fb0ca11e5c17e01704b2c0c2cf6e23f59a62f0dd1d76819db5dc9fc1a5  guix-build-fc564434b8fb/output/aarch64-linux-gnu/SHA256SUMS.part
     41b88fb5d39140df4b14e67638f02bb07ff2d7525b7ad812f783b4c0f87531908  guix-build-fc564434b8fb/output/aarch64-linux-gnu/bitcoin-fc564434b8fb-aarch64-linux-gnu-debug.tar.gz
     59175e16424510fb37ffd2a674aad4f7ef8eb639f260c076b518785a0f81ed3d6  guix-build-fc564434b8fb/output/aarch64-linux-gnu/bitcoin-fc564434b8fb-aarch64-linux-gnu.tar.gz
     680efa6885b84ac84d103a48045cd179e8416dca998dee86a075558d1d596faaf  guix-build-fc564434b8fb/output/arm-linux-gnueabihf/SHA256SUMS.part
     72ba5ea3e1189f916849020c791fa09b618f376c5aaa61cc729745deaf0347dce  guix-build-fc564434b8fb/output/arm-linux-gnueabihf/bitcoin-fc564434b8fb-arm-linux-gnueabihf-debug.tar.gz
     8fd7c6c6a26a190b8545ba1db2352003c87c78c6164b911de929235180a75d78d  guix-build-fc564434b8fb/output/arm-linux-gnueabihf/bitcoin-fc564434b8fb-arm-linux-gnueabihf.tar.gz
     98d9a2b291a0b508a2abc1dcfdbf81eb2da06e1e3a6f45ae458152a2976fd3548  guix-build-fc564434b8fb/output/arm64-apple-darwin/SHA256SUMS.part
    10c2eff8b7576a0de4450e70689bc883f19bf72ce60e27098e3589e995fb7592ec  guix-build-fc564434b8fb/output/arm64-apple-darwin/bitcoin-fc564434b8fb-arm64-apple-darwin-codesigning.tar.gz
    1127795225bfb45932d84716078c36bd5e46cbbc8f4025a1b275becd138fff8d9e  guix-build-fc564434b8fb/output/arm64-apple-darwin/bitcoin-fc564434b8fb-arm64-apple-darwin-unsigned.tar.gz
    12dde173ad4365dee349e4cc0317c4eb370b18756841f2ce17fe870ec95525b1a9  guix-build-fc564434b8fb/output/arm64-apple-darwin/bitcoin-fc564434b8fb-arm64-apple-darwin-unsigned.zip
    137cfaeaf3fdfdd6525f73c0b95945b497bc37a875a16c5e2f87b3c3db370b1463  guix-build-fc564434b8fb/output/dist-archive/bitcoin-fc564434b8fb.tar.gz
    14c9c6434a74c68b908f7ee2376017decdc2cdaafc7130efcd97ddd79a9ee30455  guix-build-fc564434b8fb/output/powerpc64-linux-gnu/SHA256SUMS.part
    15e21646e7d4f1e6feacffa5fd6d7c7932b1933b18c505683af4d3cd29f6cec5ed  guix-build-fc564434b8fb/output/powerpc64-linux-gnu/bitcoin-fc564434b8fb-powerpc64-linux-gnu-debug.tar.gz
    16c327f0d153b54be042805c7039909c1fb499b53c6865251f804a422ccce076d0  guix-build-fc564434b8fb/output/powerpc64-linux-gnu/bitcoin-fc564434b8fb-powerpc64-linux-gnu.tar.gz
    1717f6a43afeab0d604c622b6446cd0ce91941446583b0992dfe7de3ac373805a3  guix-build-fc564434b8fb/output/riscv64-linux-gnu/SHA256SUMS.part
    18c55582b7a41b420d469718c3863cc4f422919ed9a40889b2158b55a70f0ca242  guix-build-fc564434b8fb/output/riscv64-linux-gnu/bitcoin-fc564434b8fb-riscv64-linux-gnu-debug.tar.gz
    1959797ae9b27b5c4756d5b86ac3f96f42d3a516cdd51403302b990945e613f518  guix-build-fc564434b8fb/output/riscv64-linux-gnu/bitcoin-fc564434b8fb-riscv64-linux-gnu.tar.gz
    20a647c87cbaebfe51d2b53ca87e84e9fb7f0ca1c18d7f1470df57f4b3fb7974f3  guix-build-fc564434b8fb/output/x86_64-apple-darwin/SHA256SUMS.part
    21f33fb123db84d248aa50a228851dff5ec7fc3c49808b1b826bd3a6519f030432  guix-build-fc564434b8fb/output/x86_64-apple-darwin/bitcoin-fc564434b8fb-x86_64-apple-darwin-codesigning.tar.gz
    22da4d7d1c9f2cbe77e46ea776e58111fd31be998707b9c29886712616f91f3cbb  guix-build-fc564434b8fb/output/x86_64-apple-darwin/bitcoin-fc564434b8fb-x86_64-apple-darwin-unsigned.tar.gz
    23e35de680539a1763d25d6ac5134786b693aeb3386124d8bb768d2cca36d5308c  guix-build-fc564434b8fb/output/x86_64-apple-darwin/bitcoin-fc564434b8fb-x86_64-apple-darwin-unsigned.zip
    24ac1a14a98dfeac54139b556725970f9fc11050b866324c5c7b489582d30146d0  guix-build-fc564434b8fb/output/x86_64-linux-gnu/SHA256SUMS.part
    25df6e6062d4f4dc5c39eea4501beb7ea7c06fa286f3bc33905cdb550bb34464a4  guix-build-fc564434b8fb/output/x86_64-linux-gnu/bitcoin-fc564434b8fb-x86_64-linux-gnu-debug.tar.gz
    26084839fecaaccf3f674dd63dcb5ad467f9892568e72d9493f622c388cc2cd80b  guix-build-fc564434b8fb/output/x86_64-linux-gnu/bitcoin-fc564434b8fb-x86_64-linux-gnu.tar.gz
    277731e0ebe19bb9f19491f87879debdc671dfc2c3b87de816577223ef95ab2b4d  guix-build-fc564434b8fb/output/x86_64-w64-mingw32/SHA256SUMS.part
    2866bce8603fd3a78b0f2b277352ddd81fe6e20a7468e5958ecedfa26d636f6938  guix-build-fc564434b8fb/output/x86_64-w64-mingw32/bitcoin-fc564434b8fb-win64-codesigning.tar.gz
    291bc1e2341163ad8c9ac3c4e6cad4b8c53c445e3798f5e7ca2f2b8efe1956e3cf  guix-build-fc564434b8fb/output/x86_64-w64-mingw32/bitcoin-fc564434b8fb-win64-debug.zip
    30121ee4b1dd3cfb4406d851866130a6b4120a20ab16a142dd6b2fc68e9863b2bc  guix-build-fc564434b8fb/output/x86_64-w64-mingw32/bitcoin-fc564434b8fb-win64-setup-unsigned.exe
    318b57593558909a896394c7110e15515956a41c514c47f0b6b194563ca48dbd3b  guix-build-fc564434b8fb/output/x86_64-w64-mingw32/bitcoin-fc564434b8fb-win64-unsigned.zip
    
  31. fanquake commented at 5:20 pm on November 12, 2025: member

    Diffing bitcoind.exe built on x86_64 and aarch64, the offending symbols are:

    0wallet::SQLiteDataFile(fs::path const&)
    1wallet::ListDatabases[abi:cxx11](fs::path const&)
    2std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >& std::vector<std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::emplace_back<fs::path const&, char const (&) [4]>(fs::path const&, char const (&) [4]).isra.0
    

    Seeing the following difference:

     02c2
     1< bitcoind_exe_aarch64:     file format pei-x86-64
     2---
     3> bitcoind_exe_x86_64:     file format pei-x86-64
     41039578,1039579c1039578,1039579
     5<    1403f104f:	49 39 f5             	cmp    %rsi,%r13
     6<    1403f1052:	48 89 f5             	mov    %rsi,%rbp
     7---
     8>    1403f104f:	4c 39 ee             	cmp    %r13,%rsi
     9>    1403f1052:	4c 89 ed             	mov    %r13,%rbp
    101039581c1039581
    11<    1403f1059:	49 0f 43 ed          	cmovae %r13,%rbp
    12---
    13>    1403f1059:	48 0f 43 ee          	cmovae %rsi,%rbp
    141043337,1043338c1043337,1043338
    15<    1403f4b91:	4c 39 ef             	cmp    %r13,%rdi
    16<    1403f4b94:	4d 89 ee             	mov    %r13,%r14
    17---
    18>    1403f4b91:	49 39 fd             	cmp    %rdi,%r13
    19>    1403f4b94:	49 89 fe             	mov    %rdi,%r14
    201043340c1043340
    21<    1403f4b9c:	4c 0f 43 f7          	cmovae %rdi,%r14
    22---
    23>    1403f4b9c:	4d 0f 43 f5          	cmovae %r13,%r14
    
  32. fanquake force-pushed on Nov 14, 2025
  33. fanquake force-pushed on Nov 14, 2025
  34. janb84 commented at 7:00 pm on November 14, 2025: contributor

    Guix builds again :)

    My Guix Build Output

    Host architecture: aarch64 Commit: 8ebf8d3

     0 a80099915046f4771235180303b1c92664d36c8cb1564e0e8afc410d3a5eec19 guix-build-8ebf8d35eb1c/output/aarch64-linux-gnu/SHA256SUMS.part 
     1 1c3b7cd6548ba04ce58c3d8c7645941fd6cdda313d21f171d0ce10067e11087b guix-build-8ebf8d35eb1c/output/aarch64-linux-gnu/bitcoin-8ebf8d35eb1c-aarch64-linux-gnu-debug.tar.gz 
     2 e3738b32f546e48dca9a1e1adb63349c206d11a6528c73f639701e3d376dabe3 guix-build-8ebf8d35eb1c/output/aarch64-linux-gnu/bitcoin-8ebf8d35eb1c-aarch64-linux-gnu.tar.gz 
     3 9bb50c651cf6247510536e9b41253fd1e2b4b150bee76d807c78e316f0bf884d guix-build-8ebf8d35eb1c/output/arm-linux-gnueabihf/SHA256SUMS.part 
     4 5d952a2b1fa00f92b1602c15b88173f8024a941269284a02414f05cdac33e487 guix-build-8ebf8d35eb1c/output/arm-linux-gnueabihf/bitcoin-8ebf8d35eb1c-arm-linux-gnueabihf-debug.tar.gz 
     5 9506bacf3ce09e839636b4823b67520d90d7f7d6bf4c7ed9c5f1467bbed95db6 guix-build-8ebf8d35eb1c/output/arm-linux-gnueabihf/bitcoin-8ebf8d35eb1c-arm-linux-gnueabihf.tar.gz 
     6 115c6df3c26cfaf8dac75660c40dc0170c291d9caf808f0ff4ebf0059e81d287 guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/SHA256SUMS.part 
     7 b9ca58563d392ce8a0231fdfbf16774a7067a597500cc20a3838ce5dcd974fd5 guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/bitcoin-8ebf8d35eb1c-arm64-apple-darwin-codesigning.tar.gz 
     8 84922a3e184eb5be45f785b285a84d6a6d6d6bd6f9e2542f02c829bb84d324a5 guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/bitcoin-8ebf8d35eb1c-arm64-apple-darwin-unsigned.tar.gz 
     9 d845db5ff5863c8cef4d3785f359c9680d8d2a11cfe0c27718acca457045f021 guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/bitcoin-8ebf8d35eb1c-arm64-apple-darwin-unsigned.zip 
    10 02d6df9f30a295a66f183c456fba79bc4c19178a21ea4989361c8072325726bb guix-build-8ebf8d35eb1c/output/dist-archive/bitcoin-8ebf8d35eb1c.tar.gz 
    11 2d9c5dc7ea2b4f26e658ff77c1315f1c24481020afdf6cac3412d28250fb6d61 guix-build-8ebf8d35eb1c/output/powerpc64-linux-gnu/SHA256SUMS.part 
    12 6521021de7e5c9da45bd0248db37dbd75aba551b31d8fe946db616ca50f8c5e7 guix-build-8ebf8d35eb1c/output/powerpc64-linux-gnu/bitcoin-8ebf8d35eb1c-powerpc64-linux-gnu-debug.tar.gz 
    13 d31020d9705e471ccac6f87f14acd95ac83a6510271cf7b2db1bba8a449aada0 guix-build-8ebf8d35eb1c/output/powerpc64-linux-gnu/bitcoin-8ebf8d35eb1c-powerpc64-linux-gnu.tar.gz 
    14 75caf1478636f51c03cbc8e0dee11875ed16f9e6239bd0f64c9a193dbfaf2267 guix-build-8ebf8d35eb1c/output/riscv64-linux-gnu/SHA256SUMS.part 
    15 802b3b0f557e23f6c5ab34561e8d3bf8e4901784326f005f03e21ced25c60534 guix-build-8ebf8d35eb1c/output/riscv64-linux-gnu/bitcoin-8ebf8d35eb1c-riscv64-linux-gnu-debug.tar.gz 
    16 8f0062802004b91f295419312c3902dfc2df9ae36fbd6ae431a9ce0934c1c2fe guix-build-8ebf8d35eb1c/output/riscv64-linux-gnu/bitcoin-8ebf8d35eb1c-riscv64-linux-gnu.tar.gz 
    17 c6a2af5d9d796f506cb4ac53cdf3ff63e85298d2c1141b5cbc89c281c0e2db1a guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/SHA256SUMS.part 
    18 bddc105b833675b8e322979d5f2e0ed553f35fb984cf584db77e8559bb598348 guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/bitcoin-8ebf8d35eb1c-x86_64-apple-darwin-codesigning.tar.gz 
    19 5b19a7ed4dc9d0aecadfb76b11c6dbf4c4210a01f08f3f2c26316e623e970974 guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/bitcoin-8ebf8d35eb1c-x86_64-apple-darwin-unsigned.tar.gz 
    20 0b4d6d35930765566918ab5e0a8e725d7b731548da0bd956393f7a4bfa6b25ee guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/bitcoin-8ebf8d35eb1c-x86_64-apple-darwin-unsigned.zip 
    21 bef3cdc2e526752537c095e594104484aa07e5d8a25a19e3300a6868f17b52e2 guix-build-8ebf8d35eb1c/output/x86_64-linux-gnu/SHA256SUMS.part 
    22 6df3b7dfa686fa60b9d05e1977c8df0b9de21bb23a4ae3eeccb77d58af4379b7 guix-build-8ebf8d35eb1c/output/x86_64-linux-gnu/bitcoin-8ebf8d35eb1c-x86_64-linux-gnu-debug.tar.gz 
    23 684bfad555b0f1a9d6e6b49539fe81931d9a78bbaed126deda643b11540e6e52 guix-build-8ebf8d35eb1c/output/x86_64-linux-gnu/bitcoin-8ebf8d35eb1c-x86_64-linux-gnu.tar.gz 
    24 18447dfc12d611e651bd14bb0cd3a2e88fb9d8cc1472baa2ef0dbcd5aee7672d guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/SHA256SUMS.part 
    25 52d68e31227250a96c7d50fe11f9cf92749b9d10df18ccd45a3f16ffb81081fc guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-codesigning.tar.gz 
    26 79d649c9de2d7ae4281d689971e4d9804bca996b9c0ae6792a64a9e82b4ef3dd guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-debug.zip 
    27 77f25d148baefa9fdf788f3ff608b271e48997ddcd3d038cb122d2fbebb21216 guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-setup-unsigned.exe 
    28 91ffdbae0834ef8839bc8841a71474e0453da130f301df9c4b93359be9c09205 guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-unsigned.zip 
    
  35. m3dwards commented at 2:28 pm on November 18, 2025: contributor

    As I think we expected I got slightly different results on an x86 guix build for windows:

     0x86_64
     1a80099915046f4771235180303b1c92664d36c8cb1564e0e8afc410d3a5eec19  guix-build-8ebf8d35eb1c/output/aarch64-linux-gnu/SHA256SUMS.part
     21c3b7cd6548ba04ce58c3d8c7645941fd6cdda313d21f171d0ce10067e11087b  guix-build-8ebf8d35eb1c/output/aarch64-linux-gnu/bitcoin-8ebf8d35eb1c-aarch64-linux-gnu-debug.tar.gz
     3e3738b32f546e48dca9a1e1adb63349c206d11a6528c73f639701e3d376dabe3  guix-build-8ebf8d35eb1c/output/aarch64-linux-gnu/bitcoin-8ebf8d35eb1c-aarch64-linux-gnu.tar.gz
     49bb50c651cf6247510536e9b41253fd1e2b4b150bee76d807c78e316f0bf884d  guix-build-8ebf8d35eb1c/output/arm-linux-gnueabihf/SHA256SUMS.part
     55d952a2b1fa00f92b1602c15b88173f8024a941269284a02414f05cdac33e487  guix-build-8ebf8d35eb1c/output/arm-linux-gnueabihf/bitcoin-8ebf8d35eb1c-arm-linux-gnueabihf-debug.tar.gz
     69506bacf3ce09e839636b4823b67520d90d7f7d6bf4c7ed9c5f1467bbed95db6  guix-build-8ebf8d35eb1c/output/arm-linux-gnueabihf/bitcoin-8ebf8d35eb1c-arm-linux-gnueabihf.tar.gz
     7115c6df3c26cfaf8dac75660c40dc0170c291d9caf808f0ff4ebf0059e81d287  guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/SHA256SUMS.part
     8b9ca58563d392ce8a0231fdfbf16774a7067a597500cc20a3838ce5dcd974fd5  guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/bitcoin-8ebf8d35eb1c-arm64-apple-darwin-codesigning.tar.gz
     984922a3e184eb5be45f785b285a84d6a6d6d6bd6f9e2542f02c829bb84d324a5  guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/bitcoin-8ebf8d35eb1c-arm64-apple-darwin-unsigned.tar.gz
    10d845db5ff5863c8cef4d3785f359c9680d8d2a11cfe0c27718acca457045f021  guix-build-8ebf8d35eb1c/output/arm64-apple-darwin/bitcoin-8ebf8d35eb1c-arm64-apple-darwin-unsigned.zip
    1102d6df9f30a295a66f183c456fba79bc4c19178a21ea4989361c8072325726bb  guix-build-8ebf8d35eb1c/output/dist-archive/bitcoin-8ebf8d35eb1c.tar.gz
    122d9c5dc7ea2b4f26e658ff77c1315f1c24481020afdf6cac3412d28250fb6d61  guix-build-8ebf8d35eb1c/output/powerpc64-linux-gnu/SHA256SUMS.part
    136521021de7e5c9da45bd0248db37dbd75aba551b31d8fe946db616ca50f8c5e7  guix-build-8ebf8d35eb1c/output/powerpc64-linux-gnu/bitcoin-8ebf8d35eb1c-powerpc64-linux-gnu-debug.tar.gz
    14d31020d9705e471ccac6f87f14acd95ac83a6510271cf7b2db1bba8a449aada0  guix-build-8ebf8d35eb1c/output/powerpc64-linux-gnu/bitcoin-8ebf8d35eb1c-powerpc64-linux-gnu.tar.gz
    1575caf1478636f51c03cbc8e0dee11875ed16f9e6239bd0f64c9a193dbfaf2267  guix-build-8ebf8d35eb1c/output/riscv64-linux-gnu/SHA256SUMS.part
    16802b3b0f557e23f6c5ab34561e8d3bf8e4901784326f005f03e21ced25c60534  guix-build-8ebf8d35eb1c/output/riscv64-linux-gnu/bitcoin-8ebf8d35eb1c-riscv64-linux-gnu-debug.tar.gz
    178f0062802004b91f295419312c3902dfc2df9ae36fbd6ae431a9ce0934c1c2fe  guix-build-8ebf8d35eb1c/output/riscv64-linux-gnu/bitcoin-8ebf8d35eb1c-riscv64-linux-gnu.tar.gz
    18c6a2af5d9d796f506cb4ac53cdf3ff63e85298d2c1141b5cbc89c281c0e2db1a  guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/SHA256SUMS.part
    19bddc105b833675b8e322979d5f2e0ed553f35fb984cf584db77e8559bb598348  guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/bitcoin-8ebf8d35eb1c-x86_64-apple-darwin-codesigning.tar.gz
    205b19a7ed4dc9d0aecadfb76b11c6dbf4c4210a01f08f3f2c26316e623e970974  guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/bitcoin-8ebf8d35eb1c-x86_64-apple-darwin-unsigned.tar.gz
    210b4d6d35930765566918ab5e0a8e725d7b731548da0bd956393f7a4bfa6b25ee  guix-build-8ebf8d35eb1c/output/x86_64-apple-darwin/bitcoin-8ebf8d35eb1c-x86_64-apple-darwin-unsigned.zip
    22bef3cdc2e526752537c095e594104484aa07e5d8a25a19e3300a6868f17b52e2  guix-build-8ebf8d35eb1c/output/x86_64-linux-gnu/SHA256SUMS.part
    236df3b7dfa686fa60b9d05e1977c8df0b9de21bb23a4ae3eeccb77d58af4379b7  guix-build-8ebf8d35eb1c/output/x86_64-linux-gnu/bitcoin-8ebf8d35eb1c-x86_64-linux-gnu-debug.tar.gz
    24684bfad555b0f1a9d6e6b49539fe81931d9a78bbaed126deda643b11540e6e52  guix-build-8ebf8d35eb1c/output/x86_64-linux-gnu/bitcoin-8ebf8d35eb1c-x86_64-linux-gnu.tar.gz
    25ebba76dfab046bdc8bc20a0b60e8a56b00f3e23422d281239e9cec75739fcca2  guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/SHA256SUMS.part
    26ce2fbd0353b0c8316404694b0003b5a2d66feed3814dbb19d54cb666c5a438c3  guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-codesigning.tar.gz
    2779d649c9de2d7ae4281d689971e4d9804bca996b9c0ae6792a64a9e82b4ef3dd  guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-debug.zip
    28834f93924b2729615178a4368e13ade9a2d7701b4d61c95949ea60dee2433f9f  guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-setup-unsigned.exe
    29d426d1f841770d7462a762342254f88fa7692bde45c3b42a7486f652b21ec7a1  guix-build-8ebf8d35eb1c/output/x86_64-w64-mingw32/bitcoin-8ebf8d35eb1c-win64-unsigned.zip
    
  36. fanquake force-pushed on Nov 20, 2025
  37. fanquake force-pushed on Nov 25, 2025
  38. fanquake force-pushed on Nov 27, 2025
  39. fanquake force-pushed on Nov 27, 2025
  40. fanquake force-pushed on Nov 28, 2025
  41. laanwj commented at 9:29 am on December 1, 2025: member

    Seeing the following difference:

    That’s such a strange difference. Just register selection.

    We should probably aim to create a minimum reproduction, to be able to report and troubleshoot this. (running builds on x86_64, arm64 and riscv64)

  42. fanquake commented at 5:05 pm on December 1, 2025: member

    I tried comparing debug info from GCCs passes, the first one that seems to differ is objsz1:

     0--- bitcoin_wallet.dir.aarch64/db.cpp.cpp.108t.objsz1
     1+++ bitcoin_wallet.dir.x86_64/db.cpp.cpp.108t.objsz1
     2@@ -9967,15 +9967,15 @@
     3 
     4 Computing maximum dynamic object size for _38:
     5 Computing maximum object size for _38:
     6 Computing maximum dynamic object size for _143:
     7 Computing maximum object size for _143:
     8 Computing maximum dynamic object size for _215:
     9 _127: maximum dynamic object size _180
    10-__cur_194: maximum dynamic object size _72
    11+__cur_194: maximum dynamic object size _428
    12 __cur_197: maximum dynamic object size _427
    13 _201: maximum dynamic object size _426
    14 _212: maximum dynamic object size _425
    15 _215: maximum dynamic object size _424
    16 __attribute__((returns_nonnull))
    17 void std::vector<std::pair<fs::path, std::__cxx11::basic_string<char> > >::emplace_back.isra (struct vector * const this, const struct path & __args#0, const char[4] & __args#1)
    18 {
    19@@ -11678,48 +11678,48 @@
    20   [/blah/include/c++/bits/stl_pair.h:295:17] gimple_assign <constructor, *__cur_194, {CLOBBER(bob)}, NULL, NULL>
    21   [/blah/include/c++/bits/stl_pair.h:295:17] gimple_debug BIND <this, [/blah/include/c++/bits/stl_pair.h:295:17] &[/blah/include/c++/bits/stl_pair.h:295:17] __cur_194->first>
    22   [/blah/include/c++/bits/stl_pair.h:295:17] gimple_debug BIND <D.445473, [/blah/include/c++/bits/stl_pair.h:295:17] &__first_195->first>
    23   [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] gimple_debug INLINE_ENTRY __ct 
    24   [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] gimple_assign <constructor, MEM[(struct path *)__cur_194], {CLOBBER(bob)}, NULL, NULL>
    25   gimple_assign <max_expr, _414, _72, _428, NULL>
    26   gimple_assign <max_expr, _415, _72, _428, NULL>
    27-  gimple_assign <minus_expr, _412, _415, _72, NULL>
    28+  gimple_assign <minus_expr, _412, _415, _428, NULL>
    29   gimple_assign <max_expr, _413, _412, _414, NULL>
    30   gimple_assign <max_expr, _410, _72, _428, NULL>
    31-  gimple_assign <minus_expr, _411, _72, _410, NULL>
    32+  gimple_assign <minus_expr, _411, _428, _410, NULL>
    33   gimple_assign <plus_expr, _426, _411, _413, NULL>
    34   [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] gimple_assign <addr_expr, _201, [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] &MEM[(struct path *)__cur_194].D.230438, NULL, NULL>
    35   [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] gimple_assign <addr_expr, _202, &MEM[(struct path &)__first_195].D.230438, NULL, NULL>
    36   [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] gimple_debug BIND <this, _201>
    37   [/distsrc-base/distsrc-f98f7f7dc700-x86_64-w64-mingw32/src/util/fs.h:33:7] gimple_debug BIND <__p, _202>
    38   [/blah/include/c++/bits/fs_path.h:319:5] gimple_debug INLINE_ENTRY __ct 
    39   [/blah/include/c++/bits/fs_path.h:320:5] gimple_assign <constructor, *_201, {CLOBBER(bob)}, NULL, NULL>
    40-  gimple_assign <max_expr, _408, _426, _428, NULL>
    41-  gimple_assign <max_expr, _409, _426, _428, NULL>
    42+  gimple_assign <max_expr, _408, _72, _426, NULL>
    43+  gimple_assign <max_expr, _409, _72, _426, NULL>
    44   gimple_assign <minus_expr, _351, _409, _426, NULL>
    45   gimple_assign <max_expr, _333, _351, _408, NULL>
    46-  gimple_assign <max_expr, _152, _426, _428, NULL>
    47+  gimple_assign <max_expr, _152, _72, _426, NULL>
    

    for:

    0;; Function std::vector<std::pair<fs::path, std::__cxx11::basic_string<char> > >::emplace_back.isra (_ZNSt6vectorISt4pairIN2fs4pathENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS9_EE12emplace_backIJRKS2_RA4_KcEEERS9_DpOT_.isra.0, funcdef_no=21902, decl_uid=442677, cgraph_uid=16207, symbol_order=19816)
    

    So that seems like compute_builtin_object_size is returning a different value based on the host arch?

  43. laanwj commented at 8:17 pm on December 1, 2025: member

    So that seems like compute_builtin_object_size is returning a different value based on the host arch?

    Wonder if there’s any windows-specific code paths for that in mingw64? After all, we’re not seeing it when building for the other targets and architectures.

  44. laanwj commented at 12:20 pm on December 3, 2025: member

    Looks like riscv64 matches aarch64. x86_64 is the odd one out.

    0riscv64
    1c2846f9bc4a7c48e5fb09b68292cd8edb70e6be0ec5d3682b9f381c785907400  guix-build-c4da80608710/output/x86_64-w64-mingw32/SHA256SUMS.part
    2c2b3dce93b4dbf010e3d3654a0db9fdad198cffdc466e5a93d9c3e0be1b19b1d  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-codesigning.tar.gz
    3ee71b615d28df400f7a97fc19939be0687f1587307809b1d22266ffd5dc7b27e  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-debug.zip
    4fb679e08631d6529c0e09d488b121705805d09df2ab530fc22134ec4eff3eff7  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-setup-unsigned.exe
    54cad3571478f51b0451e877fa611ddab4e362244e7b220fadf132433febe07bb  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-unsigned.zip
    
    0aarch64
    1c2846f9bc4a7c48e5fb09b68292cd8edb70e6be0ec5d3682b9f381c785907400  guix-build-c4da80608710/output/x86_64-w64-mingw32/SHA256SUMS.part
    2c2b3dce93b4dbf010e3d3654a0db9fdad198cffdc466e5a93d9c3e0be1b19b1d  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-codesigning.tar.gz
    3ee71b615d28df400f7a97fc19939be0687f1587307809b1d22266ffd5dc7b27e  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-debug.zip
    4fb679e08631d6529c0e09d488b121705805d09df2ab530fc22134ec4eff3eff7  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-setup-unsigned.exe
    54cad3571478f51b0451e877fa611ddab4e362244e7b220fadf132433febe07bb  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-unsigned.zip
    
    0x86_64
    1f3894ddc5016fc136a335c93785191b8cda214a6fc07f7959c0824d86d2c45af  guix-build-c4da80608710/output/x86_64-w64-mingw32/SHA256SUMS.part
    2dce811d466f4b63e3fbd41d91df051a7c70380a9caf05268afc474b97d1482f1  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-codesigning.tar.gz
    3ee71b615d28df400f7a97fc19939be0687f1587307809b1d22266ffd5dc7b27e  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-debug.zip
    442261a034d465126596abf13acb0db14081307742b22ebe42b277a1341fd992a  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-setup-unsigned.exe
    5dffda43ea71a65b0fbb47ea782836c45a45d310f43b1177713de50e9d89bca41  guix-build-c4da80608710/output/x86_64-w64-mingw32/bitcoin-c4da80608710-win64-unsigned.zip
    
  45. laanwj commented at 2:38 pm on December 3, 2025: member

    This is a minimum C++ file (independent from bitcoin core headers) that will reproduce the issue:

     0#include <filesystem>
     1#include <string>
     2#include <fstream>
     3#include <vector>
     4
     5#include <cstring> // Unused, but removing this makes it determinstic
     6
     7namespace fs {
     8
     9using namespace std::filesystem;
    10
    11// Dummy class. Using "path = std::filesystem::path" makes it deterministic.
    12class path : public std::filesystem::path
    13{
    14public:
    15    using std::filesystem::path::path;
    16
    17    path(std::filesystem::path path) : std::filesystem::path::path(std::move(path)) {}
    18};
    19
    20}
    21
    22bool IsBDBFile(const fs::path& path)
    23{
    24    // Removing this condition makes it deterministic.
    25    if (!fs::exists(path)) return false;
    26    return true;
    27}
    28
    29bool IsSQLiteFile(const fs::path& path)
    30{
    31    // Removing this condition makes it deterministic.
    32    if (!fs::exists(path)) return false;
    33    return true;
    34}
    35
    36std::vector<std::pair<fs::path, std::string>> ListDatabases(const fs::path& wallet_dir)
    37{
    38    std::vector<std::pair<fs::path, std::string>> paths;
    39    std::error_code ec;
    40
    41    for (auto it = fs::recursive_directory_iterator(wallet_dir, ec); it != fs::recursive_directory_iterator(); it.increment(ec)) {
    42        const fs::path path{it->path().lexically_relative(wallet_dir)};
    43
    44        if (it->status().type() == fs::file_type::directory) {
    45            if (IsBDBFile(it->path())) {
    46                paths.emplace_back(path, "bdb");
    47            } else if (IsSQLiteFile(it->path())) {
    48                paths.emplace_back(path, "sqlite");
    49            }
    50        } else if (it.depth() == 0 && it->symlink_status().type() == fs::file_type::regular && it->path().extension() != ".bak") {
    51            if (it->path().filename() == "wallet.dat") {
    52                if (IsBDBFile(it->path())) {
    53                    paths.emplace_back(fs::path(), "bdb");
    54                } else if (IsSQLiteFile(it->path())) {
    55                    paths.emplace_back(fs::path(), "sqlite");
    56                }
    57            } else if (IsBDBFile(it->path())) {
    58                paths.emplace_back(path, "bdb");
    59            }
    60        }
    61    }
    62
    63    return paths;
    64}
    

    To build, i’m currently carefully reproducing the conditions of Bitcoin Core’s build system. i’m not sure in how far this is necessary, but remapping the /gnu/store prefixes is important, otherwise the platforms output differs.

     0# CFLAGS
     1HOST_CFLAGS="-O2 -g"
     2HOST_CFLAGS+=$(find /gnu/store -maxdepth 1 -mindepth 1 -type d -exec echo -n " -ffile-prefix-map={}=/usr" \;)
     3case "$HOST" in
     4    *mingw*)  HOST_CFLAGS+=" -fno-ident" ;;
     5    *darwin*) unset HOST_CFLAGS ;;
     6esac
     7
     8# CXXFLAGS
     9HOST_CXXFLAGS="$HOST_CFLAGS"
    10
    11EXTRA_CXXFLAGS="-fdump-tree-all"
    12
    13OUT_OBJ=test.cpp.obj
    14cd /distsrc-base/distsrc-c4da80608710-x86_64-w64-mingw32/build && \
    15    x86_64-w64-mingw32-g++ -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DNOMINMAX -DWIN32 -DWIN32_LEAN_AND_MEAN -D_MT -D_WIN32_IE=0x0A00 -D_WIN32_WINNT=0x0A00 -D_WINDOWS \
    16    ${HOST_CXXFLAGS} \
    17    ${EXTRA_CXXFLAGS} \
    18    -O2 -O2 -g -fvisibility=hidden -Wa,-muse-unaligned-vector-move -fno-extended-identifiers -fdebug-prefix-map=/distsrc-base/distsrc-c4da80608710-x86_64-w64-mingw32/src=. -fmacro-prefix-map=/distsrc-base/distsrc-c4da80608710-x86_64-w64-mingw32/src=. -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter -std=c++20 \
    19    -MD -MT ${OUT_OBJ} -MF ${OUT_OBJ} -o ${OUT_OBJ} -c \
    20    /bitcoin/test.cpp && \
    21    sha256sum ${OUT_OBJ}
    

    These are critical, without them, the non-determinism goes away:

    • #include <cstring>
    • Defining and using fs::path
    • IsBDBFile and IsSQLiteFile are defined and used, and have some logic in them

    i think these are purely to prevent the compiler from inlining std::vector<std::pair<fs::path, std::string>>::emplace_back, which would cause the logic that causes the divergence in objsz1 to not be hit.

  46. fanquake referenced this in commit 65f4cf3e26 on Dec 3, 2025
  47. fanquake commented at 5:46 pm on December 3, 2025: member

    @laanwj nice! I’ve re-integrated this into Guix (to build with ./contrib/guix/guix-build), and minified the flags further, see this branch: https://github.com/fanquake/bitcoin/tree/repro_33775_minimal. With the top commit, the diff is still the register swapping:

     0--- a.txt
     1+++ b.txt
     2@@ -1,9 +1,9 @@
     3 
     4-test.cpp.obj.aarch64:     file format pe-x86-64
     5+test.cpp.obj.x86_64:     file format pe-x86-64
     6 
     7 
     8 Disassembly of section .text:
     9 
    10 0000000000000000 <IsBDBFile(fs::path const&)>:
    11        0:	48 83 ec 28          	sub    $0x28,%rsp
    12        4:	e8 00 00 00 00       	call   9 <IsBDBFile(fs::path const&)+0x9>
    13@@ -223,18 +223,18 @@
    14      332:	48 39 eb             	cmp    %rbp,%rbx
    15      335:	48 0f 42 dd          	cmovb  %rbp,%rbx
    16      339:	49 83 c7 48          	add    $0x48,%r15
    17      33d:	49 83 c4 48          	add    $0x48,%r12
    18      341:	48 8d 74 1e b8       	lea    -0x48(%rsi,%rbx,1),%rsi
    19      346:	4c 39 f7             	cmp    %r14,%rdi
    20      349:	0f 84 51 01 00 00    	je     4a0 <std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >& std::vector<std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::emplace_back<fs::path const&, char const (&) [4]>(fs::path const&, char const (&) [4]) [clone .isra.0]+0x460>
    21-     34f:	49 39 f5             	cmp    %rsi,%r13
    22-     352:	48 89 f5             	mov    %rsi,%rbp
    23+     34f:	4c 39 ee             	cmp    %r13,%rsi
    24+     352:	4c 89 ed             	mov    %r13,%rbp
    25      355:	49 8d 4f 10          	lea    0x10(%r15),%rcx
    26-     359:	49 0f 43 ed          	cmovae %r13,%rbp
    27+     359:	48 0f 43 ee          	cmovae %rsi,%rbp
    28      35d:	49 89 0f             	mov    %rcx,(%r15)
    29      360:	49 8b 06             	mov    (%r14),%rax
    30      363:	48 89 eb             	mov    %rbp,%rbx
    31      366:	48 29 f3             	sub    %rsi,%rbx
    32      369:	48 29 ee             	sub    %rbp,%rsi
    33      36c:	4c 39 e0             	cmp    %r12,%rax
    34      36f:	0f 85 23 ff ff ff    	jne    298 <std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >& std::vector<std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<fs::path, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::emplace_back<fs::path const&, char const (&) [4]>(fs::path const&, char const (&) [4]) [clone .isra.0]+0x258>
    
  48. fanquake commented at 6:28 pm on December 3, 2025: member
    The non-determinism also goes away if you build with _FORTIFY_SOURCE=2 instead of _FORTIFY_SOURCE=3. The difference there should be that the headers are using __builtin_dynamic_object_size in the =3 case, instead of __builtin_object_size.
  49. fanquake referenced this in commit 32bbaf0055 on Dec 4, 2025
  50. fanquake commented at 11:44 am on December 4, 2025: member
    @maflcko suggested just declaring the util functions. This has reduced test.cpp further, with the same non-determinism (https://github.com/fanquake/bitcoin/commit/c12ef2a5312cb66cd01a2f1230fe4e976759f4e1).
  51. fanquake commented at 3:29 pm on December 4, 2025: member

    Minified a little more (https://github.com/fanquake/bitcoin/tree/repro_33775_minimal):

     0#include <filesystem>
     1#include <string>
     2#include <vector>
     3
     4#include <cstring> // Unused, but removing this makes it determinstic
     5
     6namespace fs {
     7
     8using namespace std::filesystem;
     9
    10// Dummy class. Using "path = std::filesystem::path" makes it deterministic.
    11class path : public std::filesystem::path
    12{
    13public:
    14    using std::filesystem::path::path;
    15
    16    path(std::filesystem::path path) : std::filesystem::path::path(std::move(path)) {}
    17};
    18
    19}
    20
    21bool func();
    22
    23std::vector<std::pair<fs::path, std::string>> ListDatabases(const fs::path& wallet_dir)
    24{
    25    std::vector<std::pair<fs::path, std::string>> paths;
    26    std::error_code ec;
    27
    28    for (auto it = fs::recursive_directory_iterator(wallet_dir, ec); it != fs::recursive_directory_iterator(); it.increment(ec)) {
    29        const fs::path path{it->path().lexically_relative(wallet_dir)};
    30
    31        if (func()) {
    32            if (func()) {
    33                paths.emplace_back(path, "aaa");
    34                paths.emplace_back(path, "aaaaaa");
    35            }
    36        }
    37        if (func()) {
    38            if (func()) {
    39                paths.emplace_back(fs::path(), "aaa");
    40                paths.emplace_back(fs::path(), "aaaaaa");
    41                paths.emplace_back(path, "aaaaaaaaaaaaa");
    42            }
    43        }
    44    }
    45
    46    return paths;
    47}
    

    Which still gives me:

     0-test.cpp.obj.aarch64:     file format pe-x86-64
     1+test.cpp.obj.x86_64:     file format pe-x86-64
     2 
     3 
     4 Disassembly of section .text:
     5 
     6 0000000000000000 <ListDatabases[abi:cxx11](fs::path const&)>:
     7        0:	41 57                	push   %r15
     8        2:	41 56                	push   %r14
     9@@ -782,18 +782,18 @@
    10      c73:	48 39 de             	cmp    %rbx,%rsi
    11      c76:	48 0f 42 f3          	cmovb  %rbx,%rsi
    12      c7a:	49 83 c5 48          	add    $0x48,%r13
    13      c7e:	49 83 c7 48          	add    $0x48,%r15
    14      c82:	48 8d 6c 35 b8       	lea    -0x48(%rbp,%rsi,1),%rbp
    15      c87:	4c 39 e7             	cmp    %r12,%rdi
    16      c8a:	0f 84 60 01 00 00    	je     df0 <ListDatabases[abi:cxx11](fs::path const&)+0xdf0>
    17-     c90:	4c 39 f5             	cmp    %r14,%rbp
    18-     c93:	4c 89 f3             	mov    %r14,%rbx
    19+     c90:	49 39 ee             	cmp    %rbp,%r14
    20+     c93:	48 89 eb             	mov    %rbp,%rbx
    21      c96:	49 8d 4d 10          	lea    0x10(%r13),%rcx
    22-     c9a:	48 0f 43 dd          	cmovae %rbp,%rbx
    23+     c9a:	49 0f 43 de          	cmovae %r14,%rbx
    24      c9e:	49 89 4d 00          	mov    %rcx,0x0(%r13)
    25      ca2:	49 8b 04 24          	mov    (%r12),%rax
    26      ca6:	48 89 de             	mov    %rbx,%rsi
    27      ca9:	48 29 ee             	sub    %rbp,%rsi
    28      cac:	48 29 dd             	sub    %rbx,%rbp
    29      caf:	4c 39 f8             	cmp    %r15,%rax
    30      cb2:	0f 85 10 ff ff ff    	jne    bc8 <ListDatabases[abi:cxx11](fs::path const&)+0xbc8>
    
  52. fanquake referenced this in commit e72a422254 on Dec 5, 2025
  53. fanquake referenced this in commit 5b80f08ca9 on Dec 5, 2025
  54. laanwj commented at 11:23 am on December 5, 2025: member

    Here’s a patch to manifest.scm that makes it easier to test with arbitrary gcc commits: https://github.com/laanwj/bitcoin/commit/3ab504a97997dc0a2bb0b7b0e849459e42d3c316

    Allows:

    0GCC_COMMIT=953536524a198efa932ee2cccf5d29d4fc1d24f3 GCC_HASH=3b59e003321ac50462f626bba07826c2d4c203d4fd1500c64d2ea332e61eaab0 HOSTS="x86_64-w64-mingw32" contrib/guix/guix-build
    
    • GCC_COMMIT is any arbitrary commit from the gcc repository (any will work as long as the patches apply).
    • GCC_HASH is the hex sha256sum of the tar.gz file for the commit. Sadly guix won’t work without a hash, but unlike the base32 ones this one is easy to pre-generate with stock utilities.

    FWIW i’ve checked

     0bb24b4c804f3d95b0ba95b74965bd04f425f8467  (releases/gcc-14.3.0) bad [as expected]
     1c035a7c30c310ff928988cbcf445f3f21be10aa1  (releases/gcc-14.2.0) bad
     2ed10445fe222d3973ae13eda9bf211f315c5e3f9  (releases/gcc-14.1.0) bad
     3953536524a198efa932ee2cccf5d29d4fc1d24f3  (releases/gcc-13.3.0) good [as expected]
     4ad3e759c172272f6f2ba66631e7e7bd03fb2b436  (between merge-base and releases/gcc-14.1.0) bad
     58e08c7886eed5824bebd0e011526ec302d622844  (merge base)  could not patch
     6021a0cd4494463026226a10d9556a0eedc422e5e  could not patch
     72e087957d911150258f199050bb602a6b098848c  could not patch
     8418bd6427e3b7e06d031fef037bbc36d529be23f  good
     9e36d5f424a0dcb984620a172c73da989f215dc42  good
    10dcf4395fc67a6fc83e50329d92bea82b2fdf4254  bad
    11b8592186611b671d6dc47332ecaf4a4b9c3802fb  good
    121f61f81d6ce2fe9c0ee0d833d216b848e0ad0ae4  good
    1332ce90c60154c21789225ed36faae59af8416cb4  bad
    14c187fe4bceb90643b88a55a54c4040ab9e40e659  good
    15ae156936cf4f15d9cc2b7d4e39f2e6b8fe22a9c3  bad
    168faae311a60a552ed3d506de28c50c77fa49b229  (in progress - 2 revisions left to test after this (roughly 2 steps) )
    

    bisecting wlll go back to an ancient merge base (8e08c7886eed5824bebd0e011526ec302d622844) that breaks guix’s patching, sadly.

    It might be possible to cut down the toolchain (reduce the number of stages) for faster builds. Especially if we pre-preprocess test.cpp. But i haven’t looked into this yet.

  55. fanquake commented at 11:36 am on December 5, 2025: member

    Slightly more minified:

     0#include <filesystem>
     1#include <string>
     2#include <vector>
     3#include <cstring> // Unused, but removing this makes it determinstic
     4
     5namespace fs {
     6
     7using namespace std::filesystem;
     8
     9// Dummy class. Using "path = std::filesystem::path" makes it deterministic.
    10class path : public std::filesystem::path
    11{
    12public:
    13    using std::filesystem::path::path;
    14
    15    path(std::filesystem::path path) : std::filesystem::path::path(std::move(path)) {}
    16};
    17
    18}
    19
    20bool func();
    21
    22std::vector<std::pair<fs::path, std::string>> Func(const fs::path& wallet_dir) {
    23
    24    std::vector<std::pair<fs::path, std::string>> paths;
    25    std::error_code ec;
    26
    27    for (auto it = fs::recursive_directory_iterator(wallet_dir, ec); it != fs::recursive_directory_iterator(); it.increment(ec)) {
    28        const fs::path path{it->path().lexically_relative(wallet_dir)};
    29
    30        if (func()) {
    31            paths.emplace_back(path, "aaa");
    32            paths.emplace_back(path, "aaaaaa");
    33            paths.emplace_back(fs::path(), "aaa");
    34            paths.emplace_back(fs::path(), "aaaaaa");
    35            paths.emplace_back(path, "aaaaaaaaaaaaa");
    36        }
    37    }
    38
    39    return paths;
    40}
    
     0-test.cpp.obj.aarch64:     file format pe-x86-64
     1+test.cpp.obj.x86_64:     file format pe-x86-64
     2 
     3 
     4 Disassembly of section .text:
     5 
     6 0000000000000000 <Func[abi:cxx11](fs::path const&)>:
     7        0:	41 57                	push   %r15
     8        2:	41 56                	push   %r14
     9@@ -714,18 +714,18 @@
    10      b3f:	49 39 f5             	cmp    %rsi,%r13
    11      b42:	4c 0f 42 ee          	cmovb  %rsi,%r13
    12      b46:	49 83 c6 48          	add    $0x48,%r14
    13      b4a:	4f 8d 64 2c b8       	lea    -0x48(%r12,%r13,1),%r12
    14      b4f:	49 39 ff             	cmp    %rdi,%r15
    15      b52:	0f 84 78 0d 00 00    	je     18d0 <Func[abi:cxx11](fs::path const&)+0x18d0>
    16      b58:	48 89 c5             	mov    %rax,%rbp
    17-     b5b:	4c 39 e3             	cmp    %r12,%rbx
    18-     b5e:	4c 89 e6             	mov    %r12,%rsi
    19+     b5b:	49 39 dc             	cmp    %rbx,%r12
    20+     b5e:	48 89 de             	mov    %rbx,%rsi
    21      b61:	48 8d 4d 10          	lea    0x10(%rbp),%rcx
    22-     b65:	48 0f 43 f3          	cmovae %rbx,%rsi
    23+     b65:	49 0f 43 f4          	cmovae %r12,%rsi
    24      b69:	48 89 4d 00          	mov    %rcx,0x0(%rbp)
    25      b6d:	49 8b 07             	mov    (%r15),%rax
    26      b70:	49 89 f5             	mov    %rsi,%r13
    27      b73:	4d 29 e5             	sub    %r12,%r13
    28      b76:	49 29 f4             	sub    %rsi,%r12
    29      b79:	4c 39 f0             	cmp    %r14,%rax
    30      b7c:	0f 85 1e ff ff ff    	jne    aa0 <Func[abi:cxx11](fs::path const&)+0xaa0>
    
  56. laanwj commented at 6:25 am on December 7, 2025: member

    FWIW: My bisect is not done yet (2 steps to go, it will likely finish today), but in the current commit range https://github.com/gcc-mirror/gcc/commit/1d82fc2e6824bf83159389729c31a942f7b91b04 optimize std::vector::push_back is the most suspicious as it affects vector appending. It’s a change to libstdc++-v3, not the compiler, so it doesn’t directly point at a root cause. (it would be an easy thing to revert though, and experimenting with it is less involved than having to recompile the compiler)

    Edit: confirmed:

     0$ git bisect good 1250858ac9c1426da06116823bd3e1fca64c7d56
     11d82fc2e6824bf83159389729c31a942f7b91b04 is the first bad commit
     2commit 1d82fc2e6824bf83159389729c31a942f7b91b04
     3Author: Jan Hubicka <jh@suse.cz>
     4Date:   Tue Nov 21 15:17:16 2023 +0100
     5
     6    optimize std::vector::push_back
     7
     8    this patch speeds up the push_back at -O3 significantly by making the
     9    reallocation to be inlined by default.  _M_realloc_insert is general
    10    insertion that takes iterator pointing to location where the value
    11    should be inserted.  As such it contains code to move other entries around
    12    that is quite large.
    13
    14    Since appending to the end of array is common operation, I think we should
    15    have specialized code for that.  Sadly it is really hard to work out this
    16    from IPA passes, since we basically care whether the iterator points to
    17    the same place as the end pointer, which are both passed by reference.
    18    This is inter-procedural value numbering that is quite out of reach.
    19
    20    I also added extra check making it clear that the new length of the vector
    21    is non-zero.  This saves extra conditionals.  Again it is quite hard case
    22    since _M_check_len seem to be able to return 0 if its parameter is 0.
    23    This never happens here, but we are not able to propagate this early nor
    24    at IPA stage.
    25
    26    libstdc++-v3/ChangeLog:
    27
    28            PR libstdc++/110287
    29            PR middle-end/109811
    30            PR middle-end/109849
    31            * include/bits/stl_vector.h (_M_realloc_append): New member function.
    32            (push_back): Use it.
    33            * include/bits/vector.tcc: (emplace_back): Use it.
    34            (_M_realloc_insert): Let compiler know that new vector size is non-zero.
    35            (_M_realloc_append): New member function.
    36
    37 libstdc++-v3/include/bits/stl_vector.h |  10 +++++++++-
    38 libstdc++-v3/include/bits/vector.tcc   | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
    39 2 files changed, 133 insertions(+), 2 deletions(-)
    

    Edit2: Here’s a branch that upgrades gcc to 14.3.0 but reverts that commit: https://github.com/laanwj/bitcoin/tree/2025-12-gcc-upgrade . It currently does this for all platforms, whereas mingw would be enough, but it’s just for testing.

    Output matches, as expected:

    0aarch64
    175c5322892d4851445fb178f7cc860e8190a0f10a3e56cb07ae655fcbbfda803  guix-build-91571e3e7198/output/dist-archive/bitcoin-91571e3e7198.tar.gz
    2a78e13a910da55a8a574d26c2ad00b97ab63bf817f476025b06eede6365d96b0  guix-build-91571e3e7198/output/x86_64-w64-mingw32/SHA256SUMS.part
    32a7ef2aec0b395366e8a2443b040d81f2142eec82d6beb51397882394ebed526  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-codesigning.tar.gz
    4d4e5607b7b80835342417be799b73c385c0db998636e04b5be1cdd1a13f18552  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-debug.zip
    54b5eddb8e02e08964ed85774186ea9faa64febe53e8e0a2557ebaaf003d92289  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-setup-unsigned.exe
    6ec3f22315bc0eaf9135fe4b376626459d95d41a229b9cb335ef5312001dcbb10  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-unsigned.zip
    
    0x86_64
    175c5322892d4851445fb178f7cc860e8190a0f10a3e56cb07ae655fcbbfda803  guix-build-91571e3e7198/output/dist-archive/bitcoin-91571e3e7198.tar.gz
    2a78e13a910da55a8a574d26c2ad00b97ab63bf817f476025b06eede6365d96b0  guix-build-91571e3e7198/output/x86_64-w64-mingw32/SHA256SUMS.part
    32a7ef2aec0b395366e8a2443b040d81f2142eec82d6beb51397882394ebed526  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-codesigning.tar.gz
    4d4e5607b7b80835342417be799b73c385c0db998636e04b5be1cdd1a13f18552  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-debug.zip
    54b5eddb8e02e08964ed85774186ea9faa64febe53e8e0a2557ebaaf003d92289  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-setup-unsigned.exe
    6ec3f22315bc0eaf9135fe4b376626459d95d41a229b9cb335ef5312001dcbb10  guix-build-91571e3e7198/output/x86_64-w64-mingw32/bitcoin-91571e3e7198-win64-unsigned.zip
    
  57. fanquake force-pushed on Dec 8, 2025
  58. laanwj commented at 10:56 am on December 8, 2025: member

    New reproduction branch in https://github.com/laanwj/bitcoin/tree/2025-12-repro-33775 :

    0x86_64
    1ad9ef7b0ee55a233ad01dc71b91c435df6525a5b20cc2781feae715aba712fe7  test-original.cpp.obj
    2e07ba1f07faf254d2b192bf8494949769af2c13a3f75cba926120eb90b2c60f5  test-reverted.cpp.obj
    
    0aarch64
    17d2cc20e0528d9f2a72ece935ae72a158f9f2483cd4bdbe56950db9e28f3c762  test-original.cpp.obj
    2e07ba1f07faf254d2b192bf8494949769af2c13a3f75cba926120eb90b2c60f5  test-reverted.cpp.obj
    

    The first variant (test-original.cpp.i) is preprocessed with gcc -E with the original gcc 14.3.0 headers, the second one (test-reverted.cpp.i) with the reverted commit. Note that we could now drop HOST_CXXFLAGS with the remaps (as well as all the explicit CROSS_ environment setup) as the file was preprocessed on one host, having the same paths.

  59. fanquake force-pushed on Dec 8, 2025
  60. fanquake commented at 3:05 pm on December 8, 2025: member
    I’ve pulled in a commit from @laanwj that is a partial reversion of https://github.com/gcc-mirror/gcc/commit/1d82fc2e6824bf83159389729c31a942f7b91b04.
  61. hebasto commented at 11:06 pm on December 8, 2025: member

    My Guix build:

     0aarch64
     102de261cf6c90f15a69d42b43e63485a6c0cdb3d745b5916b6834278a1d63dbc  guix-build-a72ff31b879f/output/aarch64-linux-gnu/SHA256SUMS.part
     2cf2d9615338be34f5082940d7d2b1a4c085226a410a75dceec764e42cd5df5ee  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu-debug.tar.gz
     3e18f34ce40036367f611451ae4dfe39e7dedeb53e549f229cff118bf2c2836a8  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu.tar.gz
     417cd0a5fad2a4e648128a7a5fce4b46a894153b45ca96bb1c7ad874c5946bc5d  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/SHA256SUMS.part
     5dd2f24c67be7635f13e250594d82d78b22cb9414d89e447f41e8927b98d15b34  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf-debug.tar.gz
     6b2f6d967da6402885fc4a7271da9996c90350d02fc9395c7660191f5f855bb46  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf.tar.gz
     763d80dd6a617ace6ce43ae11fc4c388eaf809341fba7304c76ed8d30a7608e0b  guix-build-a72ff31b879f/output/arm64-apple-darwin/SHA256SUMS.part
     8148af422c55455b91f9e7947bde53546aca9705eaedae4240d7eb439425c4c8d  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-codesigning.tar.gz
     98d5056542c7e47d4674328f65e05c4e8b871b823c33132c949eafd36a7dc5b7c  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.tar.gz
    105a9748970538e1bf99a1c14ef0acab693e238ec212db6a3531d6743c117de725  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.zip
    11094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    12a8bd7171de3fd69925f55cd24a3d76da19e7b6f11cc01ee101e29f81eb0f9df1  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/SHA256SUMS.part
    1306ef995f52f14fd1b780f297898c41232c10b64931b2053622228642bf04afc5  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu-debug.tar.gz
    14c71593027c636481c7ec706947876c0086baa58e43170a8d4871568db6689234  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu.tar.gz
    15c44e49c68906657e90c328b8b05ee76d92bb6dc3280d13d0f82521cf66529c51  guix-build-a72ff31b879f/output/riscv64-linux-gnu/SHA256SUMS.part
    16576f0f27c4ea2ff720e548b502f265efaeebc0896c20d2ba40839728710bae8a  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu-debug.tar.gz
    17403c010fc0f9363eb6536875b9a6181ef835eb86b8ae538f9fd9430bd67e93f6  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu.tar.gz
    188c6f83e6686cb3e486568b7353a08562e361b3abd4281ad08c47d0e74d071ea8  guix-build-a72ff31b879f/output/x86_64-apple-darwin/SHA256SUMS.part
    198271c2bd3c6d4dc17ce6eb316e4094c759b8be15fd3b308ccd6856ceb0a09b86  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-codesigning.tar.gz
    20c70b4b4a3a23ca9ffb442d00257f6bf8233792785e4a3d391be132cceaec1e81  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.tar.gz
    213abbf804472200486f757181c44e7e19aeb8119f825a6580d735d98e144ee2cd  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.zip
    2201b1696b94b9f22531c364a0c3f30a9064a5b2baff59a8333a0b38aa19be2a7b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/SHA256SUMS.part
    2386acfda0a08f9b4eddab48bf4cd723c9015b5b2d84bffecdf8175df57dac5051  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu-debug.tar.gz
    2430a3c4ef58e4bef72c712631c7b61099e2da8391b06926863a7c2003ca8dc97b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu.tar.gz
    256fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    263e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    27fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    28b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    29d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    

    UPDATE: Same hashes on x86_64.

  62. hebasto commented at 11:58 pm on December 8, 2025: member
    Approach ACK a72ff31b879f164ca7875c0121953af93d799aee.
  63. laanwj commented at 9:13 am on December 9, 2025: member
     0x86_64
     102de261cf6c90f15a69d42b43e63485a6c0cdb3d745b5916b6834278a1d63dbc  guix-build-a72ff31b879f/output/aarch64-linux-gnu/SHA256SUMS.part
     2cf2d9615338be34f5082940d7d2b1a4c085226a410a75dceec764e42cd5df5ee  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu-debug.tar.gz
     3e18f34ce40036367f611451ae4dfe39e7dedeb53e549f229cff118bf2c2836a8  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu.tar.gz
     417cd0a5fad2a4e648128a7a5fce4b46a894153b45ca96bb1c7ad874c5946bc5d  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/SHA256SUMS.part
     5dd2f24c67be7635f13e250594d82d78b22cb9414d89e447f41e8927b98d15b34  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf-debug.tar.gz
     6b2f6d967da6402885fc4a7271da9996c90350d02fc9395c7660191f5f855bb46  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf.tar.gz
     763d80dd6a617ace6ce43ae11fc4c388eaf809341fba7304c76ed8d30a7608e0b  guix-build-a72ff31b879f/output/arm64-apple-darwin/SHA256SUMS.part
     8148af422c55455b91f9e7947bde53546aca9705eaedae4240d7eb439425c4c8d  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-codesigning.tar.gz
     98d5056542c7e47d4674328f65e05c4e8b871b823c33132c949eafd36a7dc5b7c  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.tar.gz
    105a9748970538e1bf99a1c14ef0acab693e238ec212db6a3531d6743c117de725  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.zip
    11094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    12a8bd7171de3fd69925f55cd24a3d76da19e7b6f11cc01ee101e29f81eb0f9df1  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/SHA256SUMS.part
    1306ef995f52f14fd1b780f297898c41232c10b64931b2053622228642bf04afc5  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu-debug.tar.gz
    14c71593027c636481c7ec706947876c0086baa58e43170a8d4871568db6689234  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu.tar.gz
    15c44e49c68906657e90c328b8b05ee76d92bb6dc3280d13d0f82521cf66529c51  guix-build-a72ff31b879f/output/riscv64-linux-gnu/SHA256SUMS.part
    16576f0f27c4ea2ff720e548b502f265efaeebc0896c20d2ba40839728710bae8a  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu-debug.tar.gz
    17403c010fc0f9363eb6536875b9a6181ef835eb86b8ae538f9fd9430bd67e93f6  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu.tar.gz
    188c6f83e6686cb3e486568b7353a08562e361b3abd4281ad08c47d0e74d071ea8  guix-build-a72ff31b879f/output/x86_64-apple-darwin/SHA256SUMS.part
    198271c2bd3c6d4dc17ce6eb316e4094c759b8be15fd3b308ccd6856ceb0a09b86  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-codesigning.tar.gz
    20c70b4b4a3a23ca9ffb442d00257f6bf8233792785e4a3d391be132cceaec1e81  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.tar.gz
    213abbf804472200486f757181c44e7e19aeb8119f825a6580d735d98e144ee2cd  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.zip
    2201b1696b94b9f22531c364a0c3f30a9064a5b2baff59a8333a0b38aa19be2a7b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/SHA256SUMS.part
    2386acfda0a08f9b4eddab48bf4cd723c9015b5b2d84bffecdf8175df57dac5051  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu-debug.tar.gz
    2430a3c4ef58e4bef72c712631c7b61099e2da8391b06926863a7c2003ca8dc97b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu.tar.gz
    256fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    263e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    27fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    28b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    29d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    
     0aarch64
     102de261cf6c90f15a69d42b43e63485a6c0cdb3d745b5916b6834278a1d63dbc  guix-build-a72ff31b879f/output/aarch64-linux-gnu/SHA256SUMS.part
     2cf2d9615338be34f5082940d7d2b1a4c085226a410a75dceec764e42cd5df5ee  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu-debug.tar.gz
     3e18f34ce40036367f611451ae4dfe39e7dedeb53e549f229cff118bf2c2836a8  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu.tar.gz
     417cd0a5fad2a4e648128a7a5fce4b46a894153b45ca96bb1c7ad874c5946bc5d  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/SHA256SUMS.part
     5dd2f24c67be7635f13e250594d82d78b22cb9414d89e447f41e8927b98d15b34  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf-debug.tar.gz
     6b2f6d967da6402885fc4a7271da9996c90350d02fc9395c7660191f5f855bb46  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf.tar.gz
     763d80dd6a617ace6ce43ae11fc4c388eaf809341fba7304c76ed8d30a7608e0b  guix-build-a72ff31b879f/output/arm64-apple-darwin/SHA256SUMS.part
     8148af422c55455b91f9e7947bde53546aca9705eaedae4240d7eb439425c4c8d  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-codesigning.tar.gz
     98d5056542c7e47d4674328f65e05c4e8b871b823c33132c949eafd36a7dc5b7c  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.tar.gz
    105a9748970538e1bf99a1c14ef0acab693e238ec212db6a3531d6743c117de725  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.zip
    11094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    12a8bd7171de3fd69925f55cd24a3d76da19e7b6f11cc01ee101e29f81eb0f9df1  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/SHA256SUMS.part
    1306ef995f52f14fd1b780f297898c41232c10b64931b2053622228642bf04afc5  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu-debug.tar.gz
    14c71593027c636481c7ec706947876c0086baa58e43170a8d4871568db6689234  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu.tar.gz
    15c44e49c68906657e90c328b8b05ee76d92bb6dc3280d13d0f82521cf66529c51  guix-build-a72ff31b879f/output/riscv64-linux-gnu/SHA256SUMS.part
    16576f0f27c4ea2ff720e548b502f265efaeebc0896c20d2ba40839728710bae8a  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu-debug.tar.gz
    17403c010fc0f9363eb6536875b9a6181ef835eb86b8ae538f9fd9430bd67e93f6  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu.tar.gz
    188c6f83e6686cb3e486568b7353a08562e361b3abd4281ad08c47d0e74d071ea8  guix-build-a72ff31b879f/output/x86_64-apple-darwin/SHA256SUMS.part
    198271c2bd3c6d4dc17ce6eb316e4094c759b8be15fd3b308ccd6856ceb0a09b86  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-codesigning.tar.gz
    20c70b4b4a3a23ca9ffb442d00257f6bf8233792785e4a3d391be132cceaec1e81  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.tar.gz
    213abbf804472200486f757181c44e7e19aeb8119f825a6580d735d98e144ee2cd  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.zip
    2201b1696b94b9f22531c364a0c3f30a9064a5b2baff59a8333a0b38aa19be2a7b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/SHA256SUMS.part
    2386acfda0a08f9b4eddab48bf4cd723c9015b5b2d84bffecdf8175df57dac5051  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu-debug.tar.gz
    2430a3c4ef58e4bef72c712631c7b61099e2da8391b06926863a7c2003ca8dc97b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu.tar.gz
    256fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    263e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    27fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    28b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    29d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    

    RISC-V build still underway.

  64. hebasto commented at 12:32 pm on December 9, 2025: member

    My partial Guix build on RISC-V:

    0riscv64
    1094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    26fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    33e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    4fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    5b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    6d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    
  65. janb84 commented at 2:48 pm on December 10, 2025: contributor

    my Guix Build Output (matches, also with the partial RISC-V from hebasto)

    Host architecture: aarch64 Commit: a72ff31b879f

     002de261cf6c90f15a69d42b43e63485a6c0cdb3d745b5916b6834278a1d63dbc  guix-build-a72ff31b879f/output/aarch64-linux-gnu/SHA256SUMS.part
     1cf2d9615338be34f5082940d7d2b1a4c085226a410a75dceec764e42cd5df5ee  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu-debug.tar.gz
     2e18f34ce40036367f611451ae4dfe39e7dedeb53e549f229cff118bf2c2836a8  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu.tar.gz
     317cd0a5fad2a4e648128a7a5fce4b46a894153b45ca96bb1c7ad874c5946bc5d  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/SHA256SUMS.part
     4dd2f24c67be7635f13e250594d82d78b22cb9414d89e447f41e8927b98d15b34  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf-debug.tar.gz
     5b2f6d967da6402885fc4a7271da9996c90350d02fc9395c7660191f5f855bb46  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf.tar.gz
     663d80dd6a617ace6ce43ae11fc4c388eaf809341fba7304c76ed8d30a7608e0b  guix-build-a72ff31b879f/output/arm64-apple-darwin/SHA256SUMS.part
     7148af422c55455b91f9e7947bde53546aca9705eaedae4240d7eb439425c4c8d  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-codesigning.tar.gz
     88d5056542c7e47d4674328f65e05c4e8b871b823c33132c949eafd36a7dc5b7c  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.tar.gz
     95a9748970538e1bf99a1c14ef0acab693e238ec212db6a3531d6743c117de725  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.zip
    10094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    11a8bd7171de3fd69925f55cd24a3d76da19e7b6f11cc01ee101e29f81eb0f9df1  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/SHA256SUMS.part
    1206ef995f52f14fd1b780f297898c41232c10b64931b2053622228642bf04afc5  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu-debug.tar.gz
    13c71593027c636481c7ec706947876c0086baa58e43170a8d4871568db6689234  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu.tar.gz
    14c44e49c68906657e90c328b8b05ee76d92bb6dc3280d13d0f82521cf66529c51  guix-build-a72ff31b879f/output/riscv64-linux-gnu/SHA256SUMS.part
    15576f0f27c4ea2ff720e548b502f265efaeebc0896c20d2ba40839728710bae8a  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu-debug.tar.gz
    16403c010fc0f9363eb6536875b9a6181ef835eb86b8ae538f9fd9430bd67e93f6  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu.tar.gz
    178c6f83e6686cb3e486568b7353a08562e361b3abd4281ad08c47d0e74d071ea8  guix-build-a72ff31b879f/output/x86_64-apple-darwin/SHA256SUMS.part
    188271c2bd3c6d4dc17ce6eb316e4094c759b8be15fd3b308ccd6856ceb0a09b86  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-codesigning.tar.gz
    19c70b4b4a3a23ca9ffb442d00257f6bf8233792785e4a3d391be132cceaec1e81  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.tar.gz
    203abbf804472200486f757181c44e7e19aeb8119f825a6580d735d98e144ee2cd  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.zip
    2101b1696b94b9f22531c364a0c3f30a9064a5b2baff59a8333a0b38aa19be2a7b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/SHA256SUMS.part
    2286acfda0a08f9b4eddab48bf4cd723c9015b5b2d84bffecdf8175df57dac5051  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu-debug.tar.gz
    2330a3c4ef58e4bef72c712631c7b61099e2da8391b06926863a7c2003ca8dc97b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu.tar.gz
    246fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    253e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    26fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    27b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    28d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    
  66. laanwj commented at 5:32 pm on December 11, 2025: member

    Full RISC-V build. Matches the others.

     0riscv64
     102de261cf6c90f15a69d42b43e63485a6c0cdb3d745b5916b6834278a1d63dbc  guix-build-a72ff31b879f/output/aarch64-linux-gnu/SHA256SUMS.part
     2cf2d9615338be34f5082940d7d2b1a4c085226a410a75dceec764e42cd5df5ee  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu-debug.tar.gz
     3e18f34ce40036367f611451ae4dfe39e7dedeb53e549f229cff118bf2c2836a8  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu.tar.gz
     417cd0a5fad2a4e648128a7a5fce4b46a894153b45ca96bb1c7ad874c5946bc5d  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/SHA256SUMS.part
     5dd2f24c67be7635f13e250594d82d78b22cb9414d89e447f41e8927b98d15b34  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf-debug.tar.gz
     6b2f6d967da6402885fc4a7271da9996c90350d02fc9395c7660191f5f855bb46  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf.tar.gz
     763d80dd6a617ace6ce43ae11fc4c388eaf809341fba7304c76ed8d30a7608e0b  guix-build-a72ff31b879f/output/arm64-apple-darwin/SHA256SUMS.part
     8148af422c55455b91f9e7947bde53546aca9705eaedae4240d7eb439425c4c8d  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-codesigning.tar.gz
     98d5056542c7e47d4674328f65e05c4e8b871b823c33132c949eafd36a7dc5b7c  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.tar.gz
    105a9748970538e1bf99a1c14ef0acab693e238ec212db6a3531d6743c117de725  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.zip
    11094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    12a8bd7171de3fd69925f55cd24a3d76da19e7b6f11cc01ee101e29f81eb0f9df1  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/SHA256SUMS.part
    1306ef995f52f14fd1b780f297898c41232c10b64931b2053622228642bf04afc5  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu-debug.tar.gz
    14c71593027c636481c7ec706947876c0086baa58e43170a8d4871568db6689234  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu.tar.gz
    15c44e49c68906657e90c328b8b05ee76d92bb6dc3280d13d0f82521cf66529c51  guix-build-a72ff31b879f/output/riscv64-linux-gnu/SHA256SUMS.part
    16576f0f27c4ea2ff720e548b502f265efaeebc0896c20d2ba40839728710bae8a  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu-debug.tar.gz
    17403c010fc0f9363eb6536875b9a6181ef835eb86b8ae538f9fd9430bd67e93f6  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu.tar.gz
    188c6f83e6686cb3e486568b7353a08562e361b3abd4281ad08c47d0e74d071ea8  guix-build-a72ff31b879f/output/x86_64-apple-darwin/SHA256SUMS.part
    198271c2bd3c6d4dc17ce6eb316e4094c759b8be15fd3b308ccd6856ceb0a09b86  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-codesigning.tar.gz
    20c70b4b4a3a23ca9ffb442d00257f6bf8233792785e4a3d391be132cceaec1e81  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.tar.gz
    213abbf804472200486f757181c44e7e19aeb8119f825a6580d735d98e144ee2cd  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.zip
    2201b1696b94b9f22531c364a0c3f30a9064a5b2baff59a8333a0b38aa19be2a7b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/SHA256SUMS.part
    2386acfda0a08f9b4eddab48bf4cd723c9015b5b2d84bffecdf8175df57dac5051  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu-debug.tar.gz
    2430a3c4ef58e4bef72c712631c7b61099e2da8391b06926863a7c2003ca8dc97b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu.tar.gz
    256fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    263e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    27fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    28b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    29d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    
  67. maflcko commented at 1:25 pm on December 15, 2025: member
     0# uname --machine && find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
     1riscv64
     202de261cf6c90f15a69d42b43e63485a6c0cdb3d745b5916b6834278a1d63dbc  guix-build-a72ff31b879f/output/aarch64-linux-gnu/SHA256SUMS.part
     3cf2d9615338be34f5082940d7d2b1a4c085226a410a75dceec764e42cd5df5ee  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu-debug.tar.gz
     4e18f34ce40036367f611451ae4dfe39e7dedeb53e549f229cff118bf2c2836a8  guix-build-a72ff31b879f/output/aarch64-linux-gnu/bitcoin-a72ff31b879f-aarch64-linux-gnu.tar.gz
     517cd0a5fad2a4e648128a7a5fce4b46a894153b45ca96bb1c7ad874c5946bc5d  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/SHA256SUMS.part
     6dd2f24c67be7635f13e250594d82d78b22cb9414d89e447f41e8927b98d15b34  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf-debug.tar.gz
     7b2f6d967da6402885fc4a7271da9996c90350d02fc9395c7660191f5f855bb46  guix-build-a72ff31b879f/output/arm-linux-gnueabihf/bitcoin-a72ff31b879f-arm-linux-gnueabihf.tar.gz
     863d80dd6a617ace6ce43ae11fc4c388eaf809341fba7304c76ed8d30a7608e0b  guix-build-a72ff31b879f/output/arm64-apple-darwin/SHA256SUMS.part
     9148af422c55455b91f9e7947bde53546aca9705eaedae4240d7eb439425c4c8d  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-codesigning.tar.gz
    108d5056542c7e47d4674328f65e05c4e8b871b823c33132c949eafd36a7dc5b7c  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.tar.gz
    115a9748970538e1bf99a1c14ef0acab693e238ec212db6a3531d6743c117de725  guix-build-a72ff31b879f/output/arm64-apple-darwin/bitcoin-a72ff31b879f-arm64-apple-darwin-unsigned.zip
    12094363086ca8986f8460c8355abd7ff4f7b2e3dbdafab2a0c68c51e93b432e79  guix-build-a72ff31b879f/output/dist-archive/bitcoin-a72ff31b879f.tar.gz
    13a8bd7171de3fd69925f55cd24a3d76da19e7b6f11cc01ee101e29f81eb0f9df1  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/SHA256SUMS.part
    1406ef995f52f14fd1b780f297898c41232c10b64931b2053622228642bf04afc5  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu-debug.tar.gz
    15c71593027c636481c7ec706947876c0086baa58e43170a8d4871568db6689234  guix-build-a72ff31b879f/output/powerpc64-linux-gnu/bitcoin-a72ff31b879f-powerpc64-linux-gnu.tar.gz
    16c44e49c68906657e90c328b8b05ee76d92bb6dc3280d13d0f82521cf66529c51  guix-build-a72ff31b879f/output/riscv64-linux-gnu/SHA256SUMS.part
    17576f0f27c4ea2ff720e548b502f265efaeebc0896c20d2ba40839728710bae8a  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu-debug.tar.gz
    18403c010fc0f9363eb6536875b9a6181ef835eb86b8ae538f9fd9430bd67e93f6  guix-build-a72ff31b879f/output/riscv64-linux-gnu/bitcoin-a72ff31b879f-riscv64-linux-gnu.tar.gz
    198c6f83e6686cb3e486568b7353a08562e361b3abd4281ad08c47d0e74d071ea8  guix-build-a72ff31b879f/output/x86_64-apple-darwin/SHA256SUMS.part
    208271c2bd3c6d4dc17ce6eb316e4094c759b8be15fd3b308ccd6856ceb0a09b86  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-codesigning.tar.gz
    21c70b4b4a3a23ca9ffb442d00257f6bf8233792785e4a3d391be132cceaec1e81  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.tar.gz
    223abbf804472200486f757181c44e7e19aeb8119f825a6580d735d98e144ee2cd  guix-build-a72ff31b879f/output/x86_64-apple-darwin/bitcoin-a72ff31b879f-x86_64-apple-darwin-unsigned.zip
    2301b1696b94b9f22531c364a0c3f30a9064a5b2baff59a8333a0b38aa19be2a7b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/SHA256SUMS.part
    2486acfda0a08f9b4eddab48bf4cd723c9015b5b2d84bffecdf8175df57dac5051  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu-debug.tar.gz
    2530a3c4ef58e4bef72c712631c7b61099e2da8391b06926863a7c2003ca8dc97b  guix-build-a72ff31b879f/output/x86_64-linux-gnu/bitcoin-a72ff31b879f-x86_64-linux-gnu.tar.gz
    266fafb7b8801eb37d37abd1ea4907e6c93bbac06f2fc6b59d4cd771b38ba97e89  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/SHA256SUMS.part
    273e214aacaf379fefead8694b1962c4f4c38b2754eae7069de6bfb259ad80e3c3  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-codesigning.tar.gz
    28fb3f9479336034177b9309390f667047c833fb1e944dbcccbd6a097e6988de8c  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-debug.zip
    29b0ff4b5811fca1bc654e35d77828a4b025fe756e71314b6f91501f27375bd81a  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-setup-unsigned.exe
    30d7a2204da3f11afcd9851804fb56132d596cb5157c1a558045eb2b2689a6259f  guix-build-a72ff31b879f/output/x86_64-w64-mingw32/bitcoin-a72ff31b879f-win64-unsigned.zip
    
  68. hebasto commented at 2:19 pm on December 15, 2025: member

    In 92f275aabf12ebfc0d6d0ccbd83af7e4f88dad25:

    From the partially reverted commit message, it follows that the commit affects code generation at -O3. This is somewhat confusing, as we use -O2.

    Based on that commit message, I conclude that reverting only the two checks, rather than the entire commit, is safe. Nevertheless, why not revert the whole commit, which would make review of this PR much easier?

  69. maflcko commented at 2:24 pm on December 15, 2025: member

    Based on that commit message, I conclude that reverting only the two checks, rather than the entire commit, is safe. Nevertheless, why not revert the whole commit, which would make review of this PR much easier?

    I’d say it is easier to check that dead/unreachable code has been removed than to check the correct port of a optimization reversion across gcc minor or even major versions?

  70. laanwj commented at 2:24 pm on December 15, 2025: member

    Based on that commit message, I conclude that reverting only the two checks, rather than the entire commit, is safe. Nevertheless, why not revert the whole commit, which would make review of this PR much easier?

    IMO this is safer. It removes only unreachable code, which is enough to remove the non-determinism. Reverting the optimization seems more risky especially for platforms where this is not needed. (and there’s no reason to believe that the optimization is unsafe and needs to be reverted? the problem is only the non-determinism)

  71. fanquake force-pushed on Dec 17, 2025
  72. maflcko commented at 9:05 am on December 27, 2025: member

    New reproduction branch in https://github.com/laanwj/bitcoin/tree/2025-12-repro-33775 :

    0x86_64
    1ad9ef7b0ee55a233ad01dc71b91c435df6525a5b20cc2781feae715aba712fe7  test-original.cpp.obj
    2e07ba1f07faf254d2b192bf8494949769af2c13a3f75cba926120eb90b2c60f5  test-reverted.cpp.obj
    
    0aarch64
    17d2cc20e0528d9f2a72ece935ae72a158f9f2483cd4bdbe56950db9e28f3c762  test-original.cpp.obj
    2e07ba1f07faf254d2b192bf8494949769af2c13a3f75cba926120eb90b2c60f5  test-reverted.cpp.obj
    

    The first variant (test-original.cpp.i) is preprocessed with gcc -E with the original gcc 14.3.0 headers, the second one (test-reverted.cpp.i) with the reverted commit. Note that we could now drop HOST_CXXFLAGS with the remaps (as well as all the explicit CROSS_ environment setup) as the file was preprocessed on one host, having the same paths.

    Nice reproduction branch. In theory this can be used directly to be put into creduce. I spun up two fresh guix boxes on amd64 and arm64, then used the following “interestingness script”:

     0#!/bin/bash
     1#
     2# Note: Currently not parallelism-safe. Start with: creduce --n 1 ./interestingness-test.sh foo.c
     3set -e
     4
     5REMOTE1=ipv6::1  # guix aarch64
     6REMOTE2=ipv6::2  # guix amd64 x86_64
     7REMOTEPATH=/root/temp-creduce/test-original.i
     8REMOTEPATH_OBJ=/root/temp-creduce/test-original.cpp.obj
     9# overwrite the obj on compile failure, to mark it not interesting, 
    10REMOTE_CMD="bash -c '( echo test-original.cpp.obj DUMMY && ( echo compile-failure-251a03efd96f46c3f93a9e0220edb86c > /root/temp-creduce/test-original.cpp.obj ) && cd ~/temp-creduce && FORCE_DIRTY_WORKTREE=1 V=1 VERBOSE=1 JOBS=1 ./contrib/guix/guix-build ) | grep test-original.cpp.obj'"
    11
    12# Copy the file under test (C-Reduce provides it as ./foo.c, or whatever name you passed)
    13scp -i ~/.ssh/id_hetz ./foo.c "root@[$REMOTE1]:$REMOTEPATH" & P1=$!
    14scp -i ~/.ssh/id_hetz ./foo.c "root@[$REMOTE2]:$REMOTEPATH" & P2=$!
    15wait $P1
    16wait $P2
    17
    18ssh -i ~/.ssh/id_hetz "root@$REMOTE1" "$REMOTE_CMD" > /tmp/hash1.$$ & P3=$!
    19ssh -i ~/.ssh/id_hetz "root@$REMOTE2" "$REMOTE_CMD" > /tmp/hash2.$$ & P4=$!
    20wait $P3
    21wait $P4
    22
    23HASH1=$(</tmp/hash1.$$)
    24HASH2=$(</tmp/hash2.$$)
    25rm -f /tmp/hash1.$$ /tmp/hash2.$$
    26
    27echo =====
    28echo $HASH1
    29echo $HASH2
    30echo =====
    31
    32if [ "$HASH1" != "$HASH2" ]; then
    33    # also store a recovery version in /tmp/, in case of an interrupt.
    34    cp /root/temp-creduce/test-original.i /tmp/recovered 
    35    echo "NICE, the bug still reproduces!"
    36    exit 0
    37else
    38    echo "BAD, the bug is gone :("
    39    exit 1
    40fi
    

    However, going through guix each time seems to add a delay, and the script isn’t parallelism-safe, so can only be run via creduce --n 1 ./interestingness-test.sh foo.c.

    So I gave up after more than a week and wrote a new test.sh, which runs GCC directly on the Trixie hosts without guix:

     0#!/bin/bash
     1#
     2# Start via creduce test.sh bar.cpp
     3set -e
     4
     5REMOTE1=ipv6::3  # trixie aarch64
     6REMOTE2=ipv6::4  # trixie amd64 x86_64
     7PATH_EL="$$_$(date +%s%N)"
     8REMOTE_DIR=/root/scratch/$PATH_EL
     9REMOTEPATH=/root/scratch/$PATH_EL/input.cpp
    10REMOTEPATH_OBJ=/root/scratch/$PATH_EL/out.obj
    11
    12# TODO the cleanup of the remote dir should be done with a context manager to
    13# clean up even after scp/ssh failures.. I guess i shouldn't write bash scripts
    14# and just use python or so.
    15# So for now, this will fill the storage while the script is running.
    16ssh -i ~/.ssh/id_hetz "root@$REMOTE1" "mkdir $REMOTE_DIR"
    17ssh -i ~/.ssh/id_hetz "root@$REMOTE2" "mkdir $REMOTE_DIR"
    18
    19# overwrite the obj on compile failure, to mark it not interesting, 
    20REMOTE_CMD="bash -c '( echo $REMOTEPATH_OBJ DUMMY && ( echo compile-failure > $REMOTEPATH_OBJ ) && cd /root/scratch && unset LIBRARY_PATH CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH OBJC_INCLUDE_PATH OBJCPLUS_INCLUDE_PATH; x86_64-w64-mingw32-g++ -DNOMINMAX -DWIN32 -DWIN32_LEAN_AND_MEAN -D_MT -D_WIN32_IE=0x0A00 -D_WIN32_WINNT=0x0A00 -D_WINDOWS -Werror -O2 -g -fvisibility=hidden -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -std=c++20 -MD -save-temps -ffile-prefix-map=$REMOTE_DIR=. -o $REMOTEPATH_OBJ -c $REMOTEPATH && sha256sum $REMOTEPATH_OBJ ) | grep $REMOTEPATH_OBJ'"
    21
    22# Copy the file under test (C-Reduce provides it as ./bar.cpp, or whatever name you passed)
    23scp -i ~/.ssh/id_hetz ./bar.cpp "root@[$REMOTE1]:$REMOTEPATH" & P1=$!
    24scp -i ~/.ssh/id_hetz ./bar.cpp "root@[$REMOTE2]:$REMOTEPATH" & P2=$!
    25wait $P1
    26wait $P2
    27
    28ssh -i ~/.ssh/id_hetz "root@$REMOTE1" "$REMOTE_CMD" > /tmp/hash1.$PATH_EL & P3=$!
    29ssh -i ~/.ssh/id_hetz "root@$REMOTE2" "$REMOTE_CMD" > /tmp/hash2.$PATH_EL & P4=$!
    30wait $P3
    31wait $P4
    32
    33HASH1=$(</tmp/hash1.$PATH_EL)
    34HASH2=$(</tmp/hash2.$PATH_EL)
    35rm -f /tmp/hash1.$PATH_EL /tmp/hash2.$PATH_EL
    36
    37echo =====
    38echo $HASH1
    39echo $HASH2
    40echo =====
    41
    42if [ "$HASH1" != "$HASH2" ]; then
    43    # also store a recovery version in /tmp/, in case of an interrupt.
    44    cp $REMOTEPATH /tmp/recovered 
    45    ssh -i ~/.ssh/id_hetz "root@$REMOTE1" "rm -r $REMOTE_DIR"
    46    ssh -i ~/.ssh/id_hetz "root@$REMOTE2" "rm -r $REMOTE_DIR"
    47    exit 0
    48else
    49    ssh -i ~/.ssh/id_hetz "root@$REMOTE1" "rm -r $REMOTE_DIR"
    50    ssh -i ~/.ssh/id_hetz "root@$REMOTE2" "rm -r $REMOTE_DIR"
    51    exit 1
    52fi
    

    Basically the changes to the flags were adding -ffile-prefix-map=$REMOTE_DIR=. to allow parallel execution, and -Werror to avoid reducing into obvious UB. The final reproducer is probably still filled with UB. Though, I’d say it shouldn’t matter, because we’d still want the same object file hash, even if there is UB?

    So running via ~/creduce/creduce/creduce --n 256 test.sh bar.cpp, and some manual fixups (because the creduce-inline step was skipped because it kept crashing llvm-18), i got:

     0void b(void *h) {
     1  void *c;
     2  long f;
     3  long b = __builtin_dynamic_object_size(h, 0);
     4  __builtin___memcpy_chk(h, c, f, b);
     5}
     6class A {
     7public:
     8  struct ay {
     9    ay();
    10  } az;
    11  int ba[];
    12  A(A &) { b(ba); }
    13};
    14class C {
    15  A bq;
    16};
    17void *operator new(unsigned long long, void *j) { return j; }
    18int *n(void) {
    19  long g;
    20  return static_cast<int *>(operator new(g));
    21}
    22void bi(int *h, int *j) {
    23  alignas(C) char temp_obj[sizeof(C)];
    24  for (; h; j += sizeof(C)) {
    25    new (reinterpret_cast<C *>(j)) C(*reinterpret_cast<C *>(temp_obj));
    26  }
    27}
    28template <class k> void bm(int, int *j, k) {
    29  int i;
    30  bi(&i, j);
    31}
    32void a() {
    33  int *d(n());
    34  int r;
    35  bm(r, d, 0);
    36}
    

    Not sure how to proceed from here.

    Though, it seems the GCC bug reproduces across all versions from 13, to 15:

    I didn’t want to ssh into different boxes, to i just used the slow qemu for the different arches:

     0#!/usr/bin/env bash
     1
     2set -o errexit -o pipefail -o xtrace
     3
     4ARCHS=("amd64" "arm64")
     5DISTROS=(
     6    "ubuntu:24.04"
     7    "ubuntu:26.04"
     8    "debian:bookworm"
     9    "debian:trixie"
    10    "debian:forky"
    11)
    12
    13OUTFILE="sha-output.txt"
    14: > "$OUTFILE"
    15
    16for ARCH in "${ARCHS[@]}"; do
    17    for DISTRO in "${DISTROS[@]}"; do
    18        NAME="${DISTRO//:/-}-${ARCH}"
    19        IMAGE="docker.io/library/${DISTRO}"
    20
    21        podman run --replace --detach --rm --platform "linux/${ARCH}" --name "$NAME" "$IMAGE" bash -c "sleep infinity"
    22        podman cp ./bar.cpp "$NAME":/tmp/bar.cpp
    23
    24        podman exec "$NAME" bash -c "apt-get update -qq && apt-get install -y -qq g++-mingw-w64-x86-64"
    25
    26        RESULT=$(podman exec "$NAME" bash -c '
    27            x86_64-w64-mingw32-g++ -DNOMINMAX -DWIN32 -DWIN32_LEAN_AND_MEAN -D_MT \
    28            -D_WIN32_IE=0x0A00 -D_WIN32_WINNT=0x0A00 -D_WINDOWS -Werror -O2 -g \
    29            -fvisibility=hidden -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 \
    30            -std=c++20 -MD -save-temps -ffile-prefix-map=/tmp=. \
    31            -o /tmp/bar.o -c /tmp/bar.cpp >/dev/null 2>&1
    32
    33            HASH=$(sha256sum /tmp/bar.o | awk "{print \$1}")
    34            VER=$(x86_64-w64-mingw32-g++ --version | head -n 1)
    35
    36            echo "$HASH $VER"
    37        ')
    38
    39        echo "$DISTRO $ARCH $RESULT" >> "$OUTFILE"
    40    done
    41done
    

    The script was printing:

     0# cat sha-output.txt |sort
     1debian:bookworm amd64 d4a2ba2e6e13ca0629498619e695f785fe6fe85859454fa2fd502f8558dad354 x86_64-w64-mingw32-g++ (GCC) 12-win32
     2debian:bookworm arm64 9aa8f93b310968c1e5a7dc5612ecd7780f586f218dc1ba7b428400623734b4e3 x86_64-w64-mingw32-g++ (GCC) 12-win32
     3debian:forky amd64 e867b28474eeadc5764c96080f3c4a5c751cd5446ee5fb9aa337975ec0995322 x86_64-w64-mingw32-g++ (GCC) 15-win32
     4debian:forky arm64 7b01377d4ff452aa6702280bf463dcb5f7a7719c7812382d3415dda946f8bcb8 x86_64-w64-mingw32-g++ (GCC) 15-win32
     5debian:trixie amd64 3f10ad5a6aeea9c89d7bd3f6b32c901114d3c779227bf9050cef5e387280f94d x86_64-w64-mingw32-g++ (GCC) 14-win32
     6debian:trixie arm64 66e6a16a0bfd6cbf8cc71d43a16cdd08a5cc9ce1b9a9d582a4fea24a7c4ccb9e x86_64-w64-mingw32-g++ (GCC) 14-win32
     7ubuntu:24.04 amd64 fce3dd846de8d5b8f173cb5d6a99ceaf359b1245175a6003c53f377f0deefabf x86_64-w64-mingw32-g++ (GCC) 13-win32
     8ubuntu:24.04 arm64 23b9f0bd61c65ef13147cb6454387b6a841041c928766ff8c403ad7d1f00d90e x86_64-w64-mingw32-g++ (GCC) 13-win32
     9ubuntu:26.04 amd64 fce3dd846de8d5b8f173cb5d6a99ceaf359b1245175a6003c53f377f0deefabf x86_64-w64-mingw32-g++ (GCC) 13-win32
    10ubuntu:26.04 arm64 23b9f0bd61c65ef13147cb6454387b6a841041c928766ff8c403ad7d1f00d90e x86_64-w64-mingw32-g++ (GCC) 13-win32
    

    Edit: I also went ahead to de-reduce the above reproducer, so that it can be run on earlier versions of GCC. The non-determinism only happens in later GCC versions:

     0#include <cstddef>
     1#include <cstring>
     2#include <memory>
     3#include <new>
     4
     5void unsafe_copy(void *dest) {
     6  void *c;
     7  unsigned f;
     8  std::memcpy(dest, c, f);
     9}
    10
    11class A {
    12public:
    13  struct ay {
    14    ay();
    15  } az;
    16  int ba[];
    17  A(A &other) { unsafe_copy(ba); }
    18};
    19
    20class C {
    21  A bq;
    22};
    23
    24int *n(void) {
    25  unsigned g;
    26  return static_cast<int *>(::operator new(g));
    27}
    28
    29void construct_objects(int *h, int *j) {
    30  int temp_obj = 0;
    31  for (; h; ++j) {
    32    new (reinterpret_cast<C *>(std::addressof(*j)))
    33        C(*reinterpret_cast<C *>(std::addressof(temp_obj)));
    34  }
    35}
    36
    37template <class T> void construct_with_template(int, int *j, T) {
    38  int dummy;
    39  construct_objects(&dummy, j);
    40}
    41
    42void main_function() {
    43  int *data_ptr(n());
    44  int dummy_var;
    45  construct_with_template(dummy_var, data_ptr, 0);
    46}
    

    With the matrix script modified to set C++11 as standard, and some distros added, it prints:

     0debian:bookworm amd64 d886f2ba8a4e36eea2573f41d0a8ebd8b0669be2a1d3809626865a2f449bbe9b x86_64-w64-mingw32-g++ (GCC) 12-win32
     1debian:bookworm arm64 d886f2ba8a4e36eea2573f41d0a8ebd8b0669be2a1d3809626865a2f449bbe9b x86_64-w64-mingw32-g++ (GCC) 12-win32
     2debian:forky amd64 42152ea4455c43b56555719a1a9935813306fb5431ffee696f5c06e68273f11c x86_64-w64-mingw32-g++ (GCC) 15-win32
     3debian:forky arm64 338524ec534729bb84262354b963e9e7b0c2a040c95c5e90198de8982124158c x86_64-w64-mingw32-g++ (GCC) 15-win32
     4debian:trixie amd64 91b222c3f70b6b8a3fa3c91cf6390673f6bdb3e3de20eefced41d9d52e026f47 x86_64-w64-mingw32-g++ (GCC) 14-win32
     5debian:trixie arm64 46373b1bc9a010d2620609906e5b22dda4067764b2d2ab33912a86663c0b757c x86_64-w64-mingw32-g++ (GCC) 14-win32
     6ubuntu:20.04 amd64 f1edf695c84ec8070a74774a3fe4c625214a043ba78d73fc7d9cfd77b0574d09 x86_64-w64-mingw32-g++ (GCC) 9.3-win32 20200320
     7ubuntu:20.04 arm64 f1edf695c84ec8070a74774a3fe4c625214a043ba78d73fc7d9cfd77b0574d09 x86_64-w64-mingw32-g++ (GCC) 9.3-win32 20200320
     8ubuntu:22.04 amd64 a586651c8f4e52d91114b56d8f780a593e89db0f17adeecc6ba258f20e16148c x86_64-w64-mingw32-g++ (GCC) 10-win32 20220113
     9ubuntu:22.04 arm64 a586651c8f4e52d91114b56d8f780a593e89db0f17adeecc6ba258f20e16148c x86_64-w64-mingw32-g++ (GCC) 10-win32 20220113
    10ubuntu:24.04 amd64 f1566ddc60e1c42986387851993410a989a37cae4e4b13a5df0fddfe94412dad x86_64-w64-mingw32-g++ (GCC) 13-win32
    11ubuntu:24.04 arm64 f6862c2354ffa66a17b76029740f9e022defa801a2f6ebda94323bc54ed655e0 x86_64-w64-mingw32-g++ (GCC) 13-win32
    12ubuntu:26.04 amd64 69140cb4097a91e37a17b5116fe538c1b935aa124b122e425a90b6210d40bbaf x86_64-w64-mingw32-g++ (GCC) 13-win32
    13ubuntu:26.04 arm64 a94b27a01da82d3ccf90e6d88e6181be7f3c8769b50073ea82c664a1dd0300d2 x86_64-w64-mingw32-g++ (GCC) 13-win32
    
  73. fanquake force-pushed on Dec 29, 2025
  74. maflcko commented at 5:41 pm on December 30, 2025: member

    I didn’t feel good about the UB in my reduced test case, and it looks too tedious to remove the UB again, so I started from scratch from the reproducer in #33775 (comment) and minimized it manually down to a C++-11 reproducer:

     0#include <cstring> // Unused, but removing this makes it deterministic
     1#include <string>
     2#include <utility>
     3#include <vector>
     4
     5struct Item {
     6  Item(std::wstring path, std::string value)
     7      : path(std::move(path)), value(std::move(value)) {}
     8  std::wstring path;
     9  std::string value;
    10};
    11
    12bool has_new_paths();
    13std::vector<Item> Func() {
    14  std::vector<Item> paths;
    15  if (has_new_paths()) {
    16    paths.emplace_back(std::wstring(), "a");
    17    paths.emplace_back(std::wstring(), "aa");
    18    paths.emplace_back(std::wstring(), "a");
    19    paths.emplace_back(std::wstring(), "aa");
    20  }
    21  return paths;
    22}
    

    It was possible to reduce it further to still reproduce inside guix, but further reduction lead to matching hashes in my matrix.sh script for some unknown reason.

    Also, the reproducer only hit for GCC 14, and GCC 15, as expected, due to the std::vector stdlib commit.

    So I went ahead and dropped std::vector for a MiniVector:

      0#include <algorithm>
      1#include <cstring> // Unused, but removing this makes it deterministic
      2#include <memory>
      3#include <stdexcept>
      4#include <string>
      5#include <utility>
      6
      7struct Item {
      8  Item(std::wstring path, std::string value)
      9      : path(std::move(path)), value(std::move(value)) {}
     10  std::wstring path;
     11  std::string value;
     12};
     13
     14struct MiniVector {
     15  using allocator_type = std::allocator<Item>;
     16  using allocator_traits = std::allocator_traits<allocator_type>;
     17
     18  MiniVector() = default;
     19
     20  MiniVector(MiniVector&& other) noexcept
     21      : _M_alloc(std::move(other._M_alloc)),
     22        _M_start(other._M_start),
     23        _M_finish(other._M_finish),
     24        _M_end_of_storage(other._M_end_of_storage) {
     25    other._M_start = nullptr;
     26    other._M_finish = nullptr;
     27    other._M_end_of_storage = nullptr;
     28  }
     29
     30  MiniVector& operator=(MiniVector&& other) noexcept {
     31    if (this != &other) {
     32      clear();
     33      if (_M_start) {
     34        _M_deallocate(_M_start, _M_end_of_storage - _M_start);
     35      }
     36      _M_alloc = std::move(other._M_alloc);
     37      _M_start = other._M_start;
     38      _M_finish = other._M_finish;
     39      _M_end_of_storage = other._M_end_of_storage;
     40      other._M_start = nullptr;
     41      other._M_finish = nullptr;
     42      other._M_end_of_storage = nullptr;
     43    }
     44    return *this;
     45  }
     46
     47  ~MiniVector() {
     48    clear();
     49    if (_M_start) {
     50      _M_deallocate(_M_start, _M_end_of_storage - _M_start);
     51    }
     52  }
     53
     54  MiniVector(const MiniVector&) = delete;
     55  MiniVector& operator=(const MiniVector&) = delete;
     56
     57  size_t size() const { return static_cast<size_t>(_M_finish - _M_start); }
     58
     59  void clear() {
     60    _M_destroy(_M_start, _M_finish);
     61    _M_finish = _M_start;
     62  }
     63
     64  template <typename... Args>
     65  void emplace_back(Args&&... args) {
     66    if (_M_finish != _M_end_of_storage) {
     67      _M_construct(_M_finish, std::forward<Args>(args)...);
     68      ++_M_finish;
     69      return;
     70    }
     71    realloc_append(std::forward<Args>(args)...);
     72  }
     73
     74  template <typename... Args>
     75  void realloc_append(Args&&... args) {
     76    const size_t __len = _M_check_len(1, "vector::_M_realloc_append");
     77    size_t new_len = __len;
     78    if (new_len == 0) __builtin_unreachable();
     79
     80    Item* __old_start = _M_start;
     81    Item* __old_finish = _M_finish;
     82    Item* __new_start = _M_allocate(__len);
     83    Item* __new_finish = __new_start;
     84
     85    try {
     86      Item* dst = __new_start;
     87      for (Item* src = __old_start; src != __old_finish; ++src, ++dst) {
     88        _M_construct(dst, std::move(*src));
     89      }
     90      __new_finish = dst;
     91      _M_construct(__new_finish, std::forward<Args>(args)...);
     92      ++__new_finish;
     93    } catch (...) {
     94      _M_destroy(__new_start, __new_finish);
     95      _M_deallocate(__new_start, __len);
     96      throw;
     97    }
     98
     99    _M_destroy(__old_start, __old_finish);
    100    if (__old_start) {
    101      _M_deallocate(__old_start, _M_end_of_storage - __old_start);
    102    }
    103
    104    _M_start = __new_start;
    105    _M_finish = __new_finish;
    106    _M_end_of_storage = __new_start + __len;
    107  }
    108
    109 private:
    110  size_t _M_check_len(size_t __n, const char* __s) const {
    111    const size_t __sz = size();
    112    const size_t __max = max_size();
    113    if (__max - __sz < __n) throw std::length_error(__s);
    114    size_t __len = __sz + std::max(__sz, __n);
    115    if (__len < __sz || __len > __max) __len = __max;
    116    return __len;
    117  }
    118
    119  size_t max_size() const { return allocator_traits::max_size(_M_alloc); }
    120
    121  Item* _M_allocate(size_t __n) {
    122    return __n != 0 ? allocator_traits::allocate(_M_alloc, __n) : nullptr;
    123  }
    124
    125  void _M_deallocate(Item* __p, size_t __n) {
    126    if (__p) allocator_traits::deallocate(_M_alloc, __p, __n);
    127  }
    128
    129  template <typename... Args>
    130  void _M_construct(Item* __p, Args&&... __args) {
    131    allocator_traits::construct(_M_alloc, __p, std::forward<Args>(__args)...);
    132  }
    133
    134  void _M_destroy(Item* __first, Item* __last) {
    135    while (__last != __first) {
    136      --__last;
    137      allocator_traits::destroy(_M_alloc, __last);
    138    }
    139  }
    140
    141  allocator_type _M_alloc;
    142  Item* _M_start = nullptr;
    143  Item* _M_finish = nullptr;
    144  Item* _M_end_of_storage = nullptr;
    145};
    146
    147bool has_new_paths();
    148MiniVector Func() {
    149  MiniVector paths;
    150  if (has_new_paths()) {
    151    paths.emplace_back(std::wstring(), "a");
    152    paths.emplace_back(std::wstring(), "aa");
    153    paths.emplace_back(std::wstring(), "a");
    154    paths.emplace_back(std::wstring(), "aa");
    155  }
    156  return paths;
    157}
    

    The matrix script output looks more promising to be able to find a “real” bisect result.

     0     $ cat sha-output-MiniVec.txt
     1    debian:bookworm amd64 1c7ab0499cfb79636511fbc4283b84699a50a190ebfef78748840032428cbb12 x86_64-w64-mingw32-g++ (GCC) 12-win32
     2    debian:bookworm arm64 1c7ab0499cfb79636511fbc4283b84699a50a190ebfef78748840032428cbb12 x86_64-w64-mingw32-g++ (GCC) 12-win32
     3    debian:bullseye amd64 4c2070234162566d4725c175f971fe92318dd488c77c6367e0d9b951ca6a4b48 x86_64-w64-mingw32-g++ (GCC) 10-win32 20210110
     4    debian:bullseye arm64 4c2070234162566d4725c175f971fe92318dd488c77c6367e0d9b951ca6a4b48 x86_64-w64-mingw32-g++ (GCC) 10-win32 20210110
     5    debian:forky amd64 6f8bf4cc87a2913fffd8f67c6eb5a98d687d275a9df03d82723cd3b0a460040c x86_64-w64-mingw32-g++ (GCC) 15-win32
     6    debian:forky arm64 29ada99bc36372adbf6872b7e756f0fb6fbfe8ee332e0a4b576423c53f6d7648 x86_64-w64-mingw32-g++ (GCC) 15-win32
     7    debian:trixie amd64 f803cc906b3d97c2cc672c65fb51f09ebe7afafcfec1ef34b899fb951e20b871 x86_64-w64-mingw32-g++ (GCC) 14-win32
     8    debian:trixie arm64 a83bdd31114d01239cc7ebe74afd598ae8c60f0495bfe84df209db6fd50da2f5 x86_64-w64-mingw32-g++ (GCC) 14-win32
     9    ubuntu:20.04 amd64 694a2840b9f5316a49582cd91c4133a13b52f63bf3509a8e62c9be9a30c5804c x86_64-w64-mingw32-g++ (GCC) 9.3-win32 20200320
    10    ubuntu:20.04 arm64 694a2840b9f5316a49582cd91c4133a13b52f63bf3509a8e62c9be9a30c5804c x86_64-w64-mingw32-g++ (GCC) 9.3-win32 20200320
    11    ubuntu:22.04 amd64 59617571be4a284e60ae2a8aff563aaf0aa64ba057b094cbd8046fa8064d4fe0 x86_64-w64-mingw32-g++ (GCC) 10-win32 20220113
    12    ubuntu:22.04 arm64 59617571be4a284e60ae2a8aff563aaf0aa64ba057b094cbd8046fa8064d4fe0 x86_64-w64-mingw32-g++ (GCC) 10-win32 20220113
    13    ubuntu:24.04 amd64 05fb5a332c62e9404d37790c118f3d7c06fb4f9d2b83718c63f934da48a74bb2 x86_64-w64-mingw32-g++ (GCC) 13-win32
    14    ubuntu:24.04 arm64 4f5c4e9eabc7550beaae93060bbd284236f1f1e1b73c483f9e0f4aa75014abbe x86_64-w64-mingw32-g++ (GCC) 13-win32
    15    ubuntu:26.04 amd64 0111cfb12987ae47314c9165fa89a9376d27320e9bdab6d55ce1505c770a89db x86_64-w64-mingw32-g++ (GCC) 13-win32
    16    ubuntu:26.04 arm64 e4399a493a1a5d1107b8b524dbd8ab13b58d9efbdf66377c8d717505542d9f92 x86_64-w64-mingw32-g++ (GCC) 13-win32
    17    
    18     $ cat sha-output-std-vec.txt
    19    debian:bookworm amd64 a8cfe03467be5259b9e4ff12acc9fbe21adb324df53cccd013dbfc7a0e8f259f x86_64-w64-mingw32-g++ (GCC) 12-win32
    20    debian:bookworm arm64 a8cfe03467be5259b9e4ff12acc9fbe21adb324df53cccd013dbfc7a0e8f259f x86_64-w64-mingw32-g++ (GCC) 12-win32
    21    debian:bullseye amd64 be3c68a6ee61550786ca349aac0bb41f9b8df85d3f516b325a6cde8154bc8305 x86_64-w64-mingw32-g++ (GCC) 10-win32 20210110
    22    debian:bullseye arm64 be3c68a6ee61550786ca349aac0bb41f9b8df85d3f516b325a6cde8154bc8305 x86_64-w64-mingw32-g++ (GCC) 10-win32 20210110
    23    debian:forky amd64 7cfc86de43f52339c80f5ce4175267b725ec1adfd972ad8349125cffe89b664a x86_64-w64-mingw32-g++ (GCC) 15-win32
    24    debian:forky arm64 0e3ebb14919f05f6074daebd6f14adb88f5308563b5b20240f197dd95976f6bb x86_64-w64-mingw32-g++ (GCC) 15-win32
    25    debian:trixie amd64 ce9e8688a2d4592d306e70b0815ef7178c420fd629d548a4cfde4d4493ce896a x86_64-w64-mingw32-g++ (GCC) 14-win32
    26    debian:trixie arm64 8947fa89d6b99322d38dc44130cecbb7416edf2eaf3b423f1e1108508330827a x86_64-w64-mingw32-g++ (GCC) 14-win32
    27    ubuntu:20.04 amd64 c85301bb44140c1f42c93d2a7e782160ec665c706b46aee270ae98ecc3327d30 x86_64-w64-mingw32-g++ (GCC) 9.3-win32 20200320
    28    ubuntu:20.04 arm64 c85301bb44140c1f42c93d2a7e782160ec665c706b46aee270ae98ecc3327d30 x86_64-w64-mingw32-g++ (GCC) 9.3-win32 20200320
    29    ubuntu:22.04 amd64 5dafd08f92db0ead63e2cbbf301ebedbf3ea744d1861449dd9f7805170449854 x86_64-w64-mingw32-g++ (GCC) 10-win32 20220113
    30    ubuntu:22.04 arm64 5dafd08f92db0ead63e2cbbf301ebedbf3ea744d1861449dd9f7805170449854 x86_64-w64-mingw32-g++ (GCC) 10-win32 20220113
    31    ubuntu:24.04 amd64 674f3f7ffcf5ebe791cbd08a749818c0bc95aebf28e0eda667b32ae794337152 x86_64-w64-mingw32-g++ (GCC) 13-win32
    32    ubuntu:24.04 arm64 674f3f7ffcf5ebe791cbd08a749818c0bc95aebf28e0eda667b32ae794337152 x86_64-w64-mingw32-g++ (GCC) 13-win32
    33    ubuntu:26.04 amd64 de713975c844396957cc1cc33d07e3a5262e843422076682a224abbc6aa2eb21 x86_64-w64-mingw32-g++ (GCC) 13-win32
    34    ubuntu:26.04 arm64 de713975c844396957cc1cc33d07e3a5262e843422076682a224abbc6aa2eb21 x86_64-w64-mingw32-g++ (GCC) 13-win32
    
  75. maflcko commented at 7:15 pm on December 30, 2025: member
    So “MiniVector” leads the bisect to https://github.com/gcc-mirror/gcc/commit/53ba8d669550d3a1f809048428b97ca607f95cf5, which means that -fno-ipa-vrp could be used as another workaround.
  76. in contrib/guix/patches/gcc-revert-optimize-std-vector-push_back.patch:7 in 73b68ee4d3 outdated
    0@@ -0,0 +1,38 @@
    1+From 7f8f0478457fb8588331460834d62c14d7726c18 Mon Sep 17 00:00:00 2001
    2+From: Mara van der Laan <126646+laanwj@users.noreply.github.com>
    3+Date: Mon, 8 Dec 2025 13:30:42 +0100
    4+Subject: [PATCH] Revert builtin_unreachable introduced in commit
    5+ 1d82fc2e6824bf83159389729c31a942f7b91b04.
    6+
    7+For some reason, these make the build non-deterministic between
    


    maflcko commented at 9:16 am on December 31, 2025:

    fanquake commented at 12:02 pm on December 31, 2025:
    Nice. Pulled into the patch.

    maflcko commented at 9:38 am on January 6, 2026:
    I submitted https://github.com/gcc-mirror/gcc/commit/c6085ca0ed4cef3bcf4eb382cb71e44219c10f6e, which is probably easier to review? Also, it could make sense to use that commit, so that it can be easier dropped, once backported.
  77. fanquake force-pushed on Dec 31, 2025
  78. DrahtBot added the label CI failed on Dec 31, 2025
  79. maflcko removed the label CI failed on Jan 1, 2026
  80. guix: disable building libgomp in GCC
    Prunes:
    libgomp.a
    libgomp.la
    libgomp.so
    libgomp.so.1
    libgomp.so.1.0.0
    libgomp.spec
    7735901ed2
  81. guix: disable libquadmath in GCC
    Prunes:
    libquadmath.a
    libquadmath.la
    libquadmath.so
    libquadmath.so.0
    libquadmath.so.0.0.0
    6f54e267d0
  82. guix: build GCC with --enable-host-bind-now ea29329eb7
  83. guix: disable gprofng in GCC 47be9122a7
  84. guix: use GCC 14.3.0 over 13.3.0
    This will eventually be needed for #25573, and could be useful
    for #30210.
    34909799fe
  85. fanquake force-pushed on Jan 6, 2026
  86. guix: Apply SSA generation patch to maintain determinism
    See:
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123351
    https://gcc.gnu.org/pipermail/gcc-patches/2026-January/704817.html
    fb0e6edfe8
  87. ci: migrate some jobs to Debian Trixie, use GCC 14 2a746500fa
  88. fanquake force-pushed on Jan 6, 2026
  89. DrahtBot added the label CI failed on Jan 6, 2026
  90. DrahtBot removed the label CI failed on Jan 6, 2026
  91. hebasto commented at 2:14 pm on January 6, 2026: member

    My Guix build:

     0x86_64
     140ad33c821da20854bd5c01127e0aeec4b387ca44c485655bfadc0c65a80e9ce  guix-build-2a746500fa76/output/aarch64-linux-gnu/SHA256SUMS.part
     2fe01b5d9c7619a9f8b01cccad0655c9dfe3703ea053ff9438c6941d6e8b13c78  guix-build-2a746500fa76/output/aarch64-linux-gnu/bitcoin-2a746500fa76-aarch64-linux-gnu-debug.tar.gz
     38d12bb46c0e4a6b178c821817250cdd00e6b16fa2e77e129b9224973e9ad0445  guix-build-2a746500fa76/output/aarch64-linux-gnu/bitcoin-2a746500fa76-aarch64-linux-gnu.tar.gz
     4600393616d9275202807b2f83a966f55f47d7313d9b9291587e3a4e9f23b6181  guix-build-2a746500fa76/output/arm-linux-gnueabihf/SHA256SUMS.part
     59c75f854b3f3f92dd81081af789f32b60661fd0f5d1bd9973ccd7c3cff884196  guix-build-2a746500fa76/output/arm-linux-gnueabihf/bitcoin-2a746500fa76-arm-linux-gnueabihf-debug.tar.gz
     608ac981dd5d5fb4dd943f0ea93a6281387a46b3c42c9b06a7ff0c99e39868f65  guix-build-2a746500fa76/output/arm-linux-gnueabihf/bitcoin-2a746500fa76-arm-linux-gnueabihf.tar.gz
     72dbdffc0dcde53df241d8d67e1cce6a155425c3de55f08fc3483aa62181cfae9  guix-build-2a746500fa76/output/arm64-apple-darwin/SHA256SUMS.part
     850e4268ff7039ca10c6b21b58322513c455a28477afeb61240a178ea23a72ab9  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-codesigning.tar.gz
     98137daa7a41a08279382fb63f2030802ddc538a32fe0cedae6db8e7897d53f29  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-unsigned.tar.gz
    102994d09b304cc0860b1b92553715933f3a54d53555cb60dcb6ebf57c2dc58a6e  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-unsigned.zip
    112af7c1cb984b6eec476ff441e04fcc3f5a7d26f88a9e00f8773f08cd74e88a7b  guix-build-2a746500fa76/output/dist-archive/bitcoin-2a746500fa76.tar.gz
    12dac539f42ea8115867ac3693e925f86c5ee7fbda7374e045f8c01473fceafb41  guix-build-2a746500fa76/output/powerpc64-linux-gnu/SHA256SUMS.part
    131b66865391c52292a0739a6fa69024bf850c6b41f0768d4e9db045aeffc4c5c8  guix-build-2a746500fa76/output/powerpc64-linux-gnu/bitcoin-2a746500fa76-powerpc64-linux-gnu-debug.tar.gz
    141faa4b649573ead908d51a43a78298ae0cd2015e6054bd8790d19acbdde74a5d  guix-build-2a746500fa76/output/powerpc64-linux-gnu/bitcoin-2a746500fa76-powerpc64-linux-gnu.tar.gz
    150388e0e34f28e1f65c1a0315603a8664529996871e062aa53bc10657663353c0  guix-build-2a746500fa76/output/riscv64-linux-gnu/SHA256SUMS.part
    160f09706414d5a15456e146819aaefd08783c8f0732a4c38bfe105bb9d50387d0  guix-build-2a746500fa76/output/riscv64-linux-gnu/bitcoin-2a746500fa76-riscv64-linux-gnu-debug.tar.gz
    170b3ef8bb5ec28d888f3c37ccf1ae95312fb4645c4c55770c95073091abe7fde4  guix-build-2a746500fa76/output/riscv64-linux-gnu/bitcoin-2a746500fa76-riscv64-linux-gnu.tar.gz
    18bcbb8f2a8e79874a6142e4eb605cf591a331f6a0448eac1801fe01996df22835  guix-build-2a746500fa76/output/x86_64-apple-darwin/SHA256SUMS.part
    193d3abd9904e286562c22a7ab10bb992aa837b37554a4c151b7051bf2cdbaf483  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-codesigning.tar.gz
    2063181d3518d3a913ce25bd3e220e8385701a76891209431ed6b6efe4e419a9bc  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-unsigned.tar.gz
    214ea713112c04b367d257676966cab796a2ff00208a393df2c8fc2f8a5af73f0a  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-unsigned.zip
    22ace818bca8fc5041483b10ceeb9e1336fd26363781167decbc32c31cbb60fdd9  guix-build-2a746500fa76/output/x86_64-linux-gnu/SHA256SUMS.part
    2376628eb51a70ed7a47f7f8da72b414654a94a952f27ea0722d0625c5952bd505  guix-build-2a746500fa76/output/x86_64-linux-gnu/bitcoin-2a746500fa76-x86_64-linux-gnu-debug.tar.gz
    242e65bee126f47702020d52c8c8f23871a39e121e983b5e5d6d04f5d9103dde57  guix-build-2a746500fa76/output/x86_64-linux-gnu/bitcoin-2a746500fa76-x86_64-linux-gnu.tar.gz
    257b228241e4f8c8740424f9663b0fdfc362619897fdeb4eac69eee49aff4ebd45  guix-build-2a746500fa76/output/x86_64-w64-mingw32/SHA256SUMS.part
    26782fce8cfcaba112dc1633ee18a0d81a3a739186bbbd250303cb4393c4b5ba76  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-codesigning.tar.gz
    277b1da47aa555de00bf1f0720ad7464c2d3ccc40ebc257aa27fc1c02407d74ebd  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-debug.zip
    28ed26ec5df9f62a063c6239698008b71acf82f6e0d7e3ca0a023f7e7ff2094427  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-setup-unsigned.exe
    29356fad06147ecc21007445ab5be5c72ea3125877f907e5ebc072686b610e2b35  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-unsigned.zip
    

    UPDATE: Got the same hashes on aarch64.

  92. fanquake commented at 3:43 pm on January 6, 2026: member

    Guix Build (aarch64):

     040ad33c821da20854bd5c01127e0aeec4b387ca44c485655bfadc0c65a80e9ce  guix-build-2a746500fa76/output/aarch64-linux-gnu/SHA256SUMS.part
     1fe01b5d9c7619a9f8b01cccad0655c9dfe3703ea053ff9438c6941d6e8b13c78  guix-build-2a746500fa76/output/aarch64-linux-gnu/bitcoin-2a746500fa76-aarch64-linux-gnu-debug.tar.gz
     28d12bb46c0e4a6b178c821817250cdd00e6b16fa2e77e129b9224973e9ad0445  guix-build-2a746500fa76/output/aarch64-linux-gnu/bitcoin-2a746500fa76-aarch64-linux-gnu.tar.gz
     3600393616d9275202807b2f83a966f55f47d7313d9b9291587e3a4e9f23b6181  guix-build-2a746500fa76/output/arm-linux-gnueabihf/SHA256SUMS.part
     49c75f854b3f3f92dd81081af789f32b60661fd0f5d1bd9973ccd7c3cff884196  guix-build-2a746500fa76/output/arm-linux-gnueabihf/bitcoin-2a746500fa76-arm-linux-gnueabihf-debug.tar.gz
     508ac981dd5d5fb4dd943f0ea93a6281387a46b3c42c9b06a7ff0c99e39868f65  guix-build-2a746500fa76/output/arm-linux-gnueabihf/bitcoin-2a746500fa76-arm-linux-gnueabihf.tar.gz
     62dbdffc0dcde53df241d8d67e1cce6a155425c3de55f08fc3483aa62181cfae9  guix-build-2a746500fa76/output/arm64-apple-darwin/SHA256SUMS.part
     750e4268ff7039ca10c6b21b58322513c455a28477afeb61240a178ea23a72ab9  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-codesigning.tar.gz
     88137daa7a41a08279382fb63f2030802ddc538a32fe0cedae6db8e7897d53f29  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-unsigned.tar.gz
     92994d09b304cc0860b1b92553715933f3a54d53555cb60dcb6ebf57c2dc58a6e  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-unsigned.zip
    102af7c1cb984b6eec476ff441e04fcc3f5a7d26f88a9e00f8773f08cd74e88a7b  guix-build-2a746500fa76/output/dist-archive/bitcoin-2a746500fa76.tar.gz
    11dac539f42ea8115867ac3693e925f86c5ee7fbda7374e045f8c01473fceafb41  guix-build-2a746500fa76/output/powerpc64-linux-gnu/SHA256SUMS.part
    121b66865391c52292a0739a6fa69024bf850c6b41f0768d4e9db045aeffc4c5c8  guix-build-2a746500fa76/output/powerpc64-linux-gnu/bitcoin-2a746500fa76-powerpc64-linux-gnu-debug.tar.gz
    131faa4b649573ead908d51a43a78298ae0cd2015e6054bd8790d19acbdde74a5d  guix-build-2a746500fa76/output/powerpc64-linux-gnu/bitcoin-2a746500fa76-powerpc64-linux-gnu.tar.gz
    140388e0e34f28e1f65c1a0315603a8664529996871e062aa53bc10657663353c0  guix-build-2a746500fa76/output/riscv64-linux-gnu/SHA256SUMS.part
    150f09706414d5a15456e146819aaefd08783c8f0732a4c38bfe105bb9d50387d0  guix-build-2a746500fa76/output/riscv64-linux-gnu/bitcoin-2a746500fa76-riscv64-linux-gnu-debug.tar.gz
    160b3ef8bb5ec28d888f3c37ccf1ae95312fb4645c4c55770c95073091abe7fde4  guix-build-2a746500fa76/output/riscv64-linux-gnu/bitcoin-2a746500fa76-riscv64-linux-gnu.tar.gz
    17bcbb8f2a8e79874a6142e4eb605cf591a331f6a0448eac1801fe01996df22835  guix-build-2a746500fa76/output/x86_64-apple-darwin/SHA256SUMS.part
    183d3abd9904e286562c22a7ab10bb992aa837b37554a4c151b7051bf2cdbaf483  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-codesigning.tar.gz
    1963181d3518d3a913ce25bd3e220e8385701a76891209431ed6b6efe4e419a9bc  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-unsigned.tar.gz
    204ea713112c04b367d257676966cab796a2ff00208a393df2c8fc2f8a5af73f0a  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-unsigned.zip
    21ace818bca8fc5041483b10ceeb9e1336fd26363781167decbc32c31cbb60fdd9  guix-build-2a746500fa76/output/x86_64-linux-gnu/SHA256SUMS.part
    2276628eb51a70ed7a47f7f8da72b414654a94a952f27ea0722d0625c5952bd505  guix-build-2a746500fa76/output/x86_64-linux-gnu/bitcoin-2a746500fa76-x86_64-linux-gnu-debug.tar.gz
    232e65bee126f47702020d52c8c8f23871a39e121e983b5e5d6d04f5d9103dde57  guix-build-2a746500fa76/output/x86_64-linux-gnu/bitcoin-2a746500fa76-x86_64-linux-gnu.tar.gz
    247b228241e4f8c8740424f9663b0fdfc362619897fdeb4eac69eee49aff4ebd45  guix-build-2a746500fa76/output/x86_64-w64-mingw32/SHA256SUMS.part
    25782fce8cfcaba112dc1633ee18a0d81a3a739186bbbd250303cb4393c4b5ba76  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-codesigning.tar.gz
    267b1da47aa555de00bf1f0720ad7464c2d3ccc40ebc257aa27fc1c02407d74ebd  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-debug.zip
    27ed26ec5df9f62a063c6239698008b71acf82f6e0d7e3ca0a023f7e7ff2094427  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-setup-unsigned.exe
    28356fad06147ecc21007445ab5be5c72ea3125877f907e5ebc072686b610e2b35  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-unsigned.zip
    
  93. hebasto approved
  94. hebasto commented at 3:55 pm on January 6, 2026: member
    ACK 2a746500fa769f83405349bcffa3f0971b92a2de. I have reviewed the code and it looks OK. The new GCC patch looks reasonable.
  95. DrahtBot requested review from maflcko on Jan 6, 2026
  96. in contrib/guix/manifest.scm:424 in ea29329eb7
    420@@ -421,6 +421,7 @@ inspecting signatures in Mach-O binaries.")
    421             ;; https://gcc.gnu.org/install/configure.html
    422             (list "--enable-threads=posix",
    423                   "--enable-default-ssp=yes",
    424+                  "--enable-host-bind-now=yes",
    


    theuni commented at 5:16 pm on January 12, 2026:

    For context:

    Specify that the host executables should be linked with the option -Wl,-z,now, which means that the dynamic linker will resolve all symbols when the executables are started, and that in turn allows RELRO to mark the GOT read-only, resulting in better security.

  97. in contrib/guix/manifest.scm:425 in 7735901ed2
    421@@ -422,6 +422,7 @@ inspecting signatures in Mach-O binaries.")
    422             (list "--enable-threads=posix",
    423                   "--enable-default-ssp=yes",
    424                   "--disable-gcov",
    425+                  "--disable-libgomp",
    


    theuni commented at 5:37 pm on January 12, 2026:

    Are we sure that none of our dependencies use this anywhere? From a quick look, it doesn’t seem like gcc itself does. And libstdc++ does, but only for the experimental parallel/* ts.

    I’d hate to see us quietly losing performance somewhere. But as far as I can tell, none of our deps are using it at the moment.

  98. in contrib/guix/manifest.scm:126 in fb0e6edfe8
    122@@ -123,7 +123,7 @@ desirable for building Bitcoin Core release binaries."
    123 
    124 (define (gcc-libgcc-patches gcc)
    125   (package-with-extra-patches gcc
    126-    (search-our-patches "gcc-remap-guix-store.patch")))
    127+    (search-our-patches "gcc-remap-guix-store.patch" "gcc-ssa-generation.patch")))
    


    theuni commented at 5:38 pm on January 12, 2026:
    Beautiful! Nice work @maflcko !
  99. theuni approved
  100. theuni commented at 5:39 pm on January 12, 2026: member

    utACK 2a746500fa769f83405349bcffa3f0971b92a2de

    Left a comment about usage of openmp, though I don’t think it’s a problem.

    Out of curiosity though, is it only disabled to safe on compilation time and size? Or does it avoid some problem?

  101. fanquake referenced this in commit e0aa6f80d4 on Jan 13, 2026
  102. fanquake requested review from sedited on Jan 13, 2026
  103. sedited commented at 8:10 pm on January 13, 2026: contributor

    Nice work @maflcko!

    Guix build (aarch64):

     040ad33c821da20854bd5c01127e0aeec4b387ca44c485655bfadc0c65a80e9ce  guix-build-2a746500fa76/output/aarch64-linux-gnu/SHA256SUMS.part
     1fe01b5d9c7619a9f8b01cccad0655c9dfe3703ea053ff9438c6941d6e8b13c78  guix-build-2a746500fa76/output/aarch64-linux-gnu/bitcoin-2a746500fa76-aarch64-linux-gnu-debug.tar.gz
     28d12bb46c0e4a6b178c821817250cdd00e6b16fa2e77e129b9224973e9ad0445  guix-build-2a746500fa76/output/aarch64-linux-gnu/bitcoin-2a746500fa76-aarch64-linux-gnu.tar.gz
     3600393616d9275202807b2f83a966f55f47d7313d9b9291587e3a4e9f23b6181  guix-build-2a746500fa76/output/arm-linux-gnueabihf/SHA256SUMS.part
     49c75f854b3f3f92dd81081af789f32b60661fd0f5d1bd9973ccd7c3cff884196  guix-build-2a746500fa76/output/arm-linux-gnueabihf/bitcoin-2a746500fa76-arm-linux-gnueabihf-debug.tar.gz
     508ac981dd5d5fb4dd943f0ea93a6281387a46b3c42c9b06a7ff0c99e39868f65  guix-build-2a746500fa76/output/arm-linux-gnueabihf/bitcoin-2a746500fa76-arm-linux-gnueabihf.tar.gz
     62dbdffc0dcde53df241d8d67e1cce6a155425c3de55f08fc3483aa62181cfae9  guix-build-2a746500fa76/output/arm64-apple-darwin/SHA256SUMS.part
     750e4268ff7039ca10c6b21b58322513c455a28477afeb61240a178ea23a72ab9  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-codesigning.tar.gz
     88137daa7a41a08279382fb63f2030802ddc538a32fe0cedae6db8e7897d53f29  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-unsigned.tar.gz
     92994d09b304cc0860b1b92553715933f3a54d53555cb60dcb6ebf57c2dc58a6e  guix-build-2a746500fa76/output/arm64-apple-darwin/bitcoin-2a746500fa76-arm64-apple-darwin-unsigned.zip
    102af7c1cb984b6eec476ff441e04fcc3f5a7d26f88a9e00f8773f08cd74e88a7b  guix-build-2a746500fa76/output/dist-archive/bitcoin-2a746500fa76.tar.gz
    11dac539f42ea8115867ac3693e925f86c5ee7fbda7374e045f8c01473fceafb41  guix-build-2a746500fa76/output/powerpc64-linux-gnu/SHA256SUMS.part
    121b66865391c52292a0739a6fa69024bf850c6b41f0768d4e9db045aeffc4c5c8  guix-build-2a746500fa76/output/powerpc64-linux-gnu/bitcoin-2a746500fa76-powerpc64-linux-gnu-debug.tar.gz
    131faa4b649573ead908d51a43a78298ae0cd2015e6054bd8790d19acbdde74a5d  guix-build-2a746500fa76/output/powerpc64-linux-gnu/bitcoin-2a746500fa76-powerpc64-linux-gnu.tar.gz
    140388e0e34f28e1f65c1a0315603a8664529996871e062aa53bc10657663353c0  guix-build-2a746500fa76/output/riscv64-linux-gnu/SHA256SUMS.part
    150f09706414d5a15456e146819aaefd08783c8f0732a4c38bfe105bb9d50387d0  guix-build-2a746500fa76/output/riscv64-linux-gnu/bitcoin-2a746500fa76-riscv64-linux-gnu-debug.tar.gz
    160b3ef8bb5ec28d888f3c37ccf1ae95312fb4645c4c55770c95073091abe7fde4  guix-build-2a746500fa76/output/riscv64-linux-gnu/bitcoin-2a746500fa76-riscv64-linux-gnu.tar.gz
    17bcbb8f2a8e79874a6142e4eb605cf591a331f6a0448eac1801fe01996df22835  guix-build-2a746500fa76/output/x86_64-apple-darwin/SHA256SUMS.part
    183d3abd9904e286562c22a7ab10bb992aa837b37554a4c151b7051bf2cdbaf483  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-codesigning.tar.gz
    1963181d3518d3a913ce25bd3e220e8385701a76891209431ed6b6efe4e419a9bc  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-unsigned.tar.gz
    204ea713112c04b367d257676966cab796a2ff00208a393df2c8fc2f8a5af73f0a  guix-build-2a746500fa76/output/x86_64-apple-darwin/bitcoin-2a746500fa76-x86_64-apple-darwin-unsigned.zip
    21ace818bca8fc5041483b10ceeb9e1336fd26363781167decbc32c31cbb60fdd9  guix-build-2a746500fa76/output/x86_64-linux-gnu/SHA256SUMS.part
    2276628eb51a70ed7a47f7f8da72b414654a94a952f27ea0722d0625c5952bd505  guix-build-2a746500fa76/output/x86_64-linux-gnu/bitcoin-2a746500fa76-x86_64-linux-gnu-debug.tar.gz
    232e65bee126f47702020d52c8c8f23871a39e121e983b5e5d6d04f5d9103dde57  guix-build-2a746500fa76/output/x86_64-linux-gnu/bitcoin-2a746500fa76-x86_64-linux-gnu.tar.gz
    247b228241e4f8c8740424f9663b0fdfc362619897fdeb4eac69eee49aff4ebd45  guix-build-2a746500fa76/output/x86_64-w64-mingw32/SHA256SUMS.part
    25782fce8cfcaba112dc1633ee18a0d81a3a739186bbbd250303cb4393c4b5ba76  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-codesigning.tar.gz
    267b1da47aa555de00bf1f0720ad7464c2d3ccc40ebc257aa27fc1c02407d74ebd  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-debug.zip
    27ed26ec5df9f62a063c6239698008b71acf82f6e0d7e3ca0a023f7e7ff2094427  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-setup-unsigned.exe
    28356fad06147ecc21007445ab5be5c72ea3125877f907e5ebc072686b610e2b35  guix-build-2a746500fa76/output/x86_64-w64-mingw32/bitcoin-2a746500fa76-win64-unsigned.zip
    
  104. sedited approved
  105. sedited commented at 8:28 pm on January 13, 2026: contributor
    ACK 2a746500fa769f83405349bcffa3f0971b92a2de
  106. glozow merged this on Jan 13, 2026
  107. glozow closed this on Jan 13, 2026

  108. fanquake deleted the branch on Jan 14, 2026

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: 2026-01-28 21:13 UTC

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