From 10cbf2255d9e74166f5f41e82fefa4a7f890e73f Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Wed, 12 Feb 2025 17:39:52 +0100 Subject: [PATCH 1/6] ci: Use APT_LLVM_V in msan task Also, use update-alternatives to avoid having to manually specify clang-${APT_LLVM_V} or llvm-symbolizer-${APT_LLVM_V} everywhere. Github-Pull: #32999 Rebased-From: fad040a5787a8ac0a13aef5c54e5a675de239e92 --- ci/test/00_setup_env_native_asan.sh | 4 ++-- ci/test/00_setup_env_native_fuzz.sh | 5 ++--- ci/test/00_setup_env_native_msan.sh | 3 ++- ci/test/00_setup_env_native_tsan.sh | 2 +- ci/test/01_base_install.sh | 34 +++++++++++++++++++---------- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/ci/test/00_setup_env_native_asan.sh b/ci/test/00_setup_env_native_asan.sh index ead550a43ce..9f562df4647 100755 --- a/ci/test/00_setup_env_native_asan.sh +++ b/ci/test/00_setup_env_native_asan.sh @@ -26,8 +26,8 @@ export GOAL="install" export BITCOIN_CONFIG="\ -DWITH_USDT=ON -DWITH_ZMQ=ON -DWITH_BDB=ON -DWARN_INCOMPATIBLE_BDB=OFF -DBUILD_GUI=ON \ -DSANITIZERS=address,float-divide-by-zero,integer,undefined \ - -DCMAKE_C_COMPILER=clang-${APT_LLVM_V} \ - -DCMAKE_CXX_COMPILER=clang++-${APT_LLVM_V} \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_FLAGS='-ftrivial-auto-var-init=pattern' \ -DCMAKE_CXX_FLAGS='-ftrivial-auto-var-init=pattern -Wno-error=deprecated-declarations' \ -DAPPEND_CXXFLAGS='-std=c++23' \ diff --git a/ci/test/00_setup_env_native_fuzz.sh b/ci/test/00_setup_env_native_fuzz.sh index c5220211fc5..f80c4d988de 100755 --- a/ci/test/00_setup_env_native_fuzz.sh +++ b/ci/test/00_setup_env_native_fuzz.sh @@ -19,9 +19,8 @@ export CI_CONTAINER_CAP="--cap-add SYS_PTRACE" # If run with (ASan + LSan), the export BITCOIN_CONFIG="\ -DBUILD_FOR_FUZZING=ON \ -DSANITIZERS=fuzzer,address,undefined,float-divide-by-zero,integer \ - -DCMAKE_C_COMPILER=clang-${APT_LLVM_V} \ - -DCMAKE_CXX_COMPILER=clang++-${APT_LLVM_V} \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_FLAGS='-ftrivial-auto-var-init=pattern' \ -DCMAKE_CXX_FLAGS='-ftrivial-auto-var-init=pattern' \ " -export LLVM_SYMBOLIZER_PATH="/usr/bin/llvm-symbolizer-${APT_LLVM_V}" diff --git a/ci/test/00_setup_env_native_msan.sh b/ci/test/00_setup_env_native_msan.sh index 8784aaa5b7b..effd8a9413d 100755 --- a/ci/test/00_setup_env_native_msan.sh +++ b/ci/test/00_setup_env_native_msan.sh @@ -7,13 +7,14 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" +export APT_LLVM_V="20" LIBCXX_DIR="/msan/cxx_build/" export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls" LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument" export MSAN_AND_LIBCXX_FLAGS="${MSAN_FLAGS} ${LIBCXX_FLAGS}" export CONTAINER_NAME="ci_native_msan" -export PACKAGES="ninja-build" +export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev libclang-${APT_LLVM_V}-dev libclang-rt-${APT_LLVM_V}-dev ninja-build" # BDB generates false-positives and will be removed in future export DEP_OPTS="DEBUG=1 NO_BDB=1 NO_QT=1 CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'" export GOAL="install" diff --git a/ci/test/00_setup_env_native_tsan.sh b/ci/test/00_setup_env_native_tsan.sh index b341adfec53..c8d9c8455f4 100755 --- a/ci/test/00_setup_env_native_tsan.sh +++ b/ci/test/00_setup_env_native_tsan.sh @@ -10,7 +10,7 @@ export CONTAINER_NAME=ci_native_tsan export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" export APT_LLVM_V="20" export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev libc++abi-${APT_LLVM_V}-dev libc++-${APT_LLVM_V}-dev python3-zmq" -export DEP_OPTS="CC=clang-${APT_LLVM_V} CXX='clang++-${APT_LLVM_V} -stdlib=libc++'" +export DEP_OPTS="CC=clang CXX='clang++ -stdlib=libc++'" export GOAL="install" export BITCOIN_CONFIG="-DWITH_ZMQ=ON -DSANITIZERS=thread \ -DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES'" diff --git a/ci/test/01_base_install.sh b/ci/test/01_base_install.sh index 1344563268f..36a7c43b3f1 100755 --- a/ci/test/01_base_install.sh +++ b/ci/test/01_base_install.sh @@ -43,27 +43,37 @@ elif [ "$CI_OS_NAME" != "macos" ]; then ${CI_RETRY_EXE} bash -c "apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $CI_BASE_PACKAGES" fi +if [ -n "${APT_LLVM_V}" ]; then + update-alternatives --install /usr/bin/clang++ clang++ "/usr/bin/clang++-${APT_LLVM_V}" 100 + update-alternatives --install /usr/bin/clang clang "/usr/bin/clang-${APT_LLVM_V}" 100 + update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer "/usr/bin/llvm-symbolizer-${APT_LLVM_V}" 100 +fi + if [ -n "$PIP_PACKAGES" ]; then # shellcheck disable=SC2086 ${CI_RETRY_EXE} pip3 install --user $PIP_PACKAGES fi if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then - ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.0" /msan/llvm-project + if [ -n "${APT_LLVM_V}" ]; then + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-$( clang --version | sed --silent 's@.*clang version \([0-9.]*\).*@\1@p' )" /msan/llvm-project + else + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.8" /msan/llvm-project - cmake -G Ninja -B /msan/clang_build/ \ - -DLLVM_ENABLE_PROJECTS="clang" \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_TARGETS_TO_BUILD=Native \ - -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \ - -S /msan/llvm-project/llvm + cmake -G Ninja -B /msan/clang_build/ \ + -DLLVM_ENABLE_PROJECTS="clang" \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_TARGETS_TO_BUILD=Native \ + -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \ + -S /msan/llvm-project/llvm - ninja -C /msan/clang_build/ "$MAKEJOBS" - ninja -C /msan/clang_build/ install-runtimes + ninja -C /msan/clang_build/ "$MAKEJOBS" + ninja -C /msan/clang_build/ install-runtimes - update-alternatives --install /usr/bin/clang++ clang++ /msan/clang_build/bin/clang++ 100 - update-alternatives --install /usr/bin/clang clang /msan/clang_build/bin/clang 100 - update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /msan/clang_build/bin/llvm-symbolizer 100 + update-alternatives --install /usr/bin/clang++ clang++ /msan/clang_build/bin/clang++ 100 + update-alternatives --install /usr/bin/clang clang /msan/clang_build/bin/clang 100 + update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /msan/clang_build/bin/llvm-symbolizer 100 + fi cmake -G Ninja -B /msan/cxx_build/ \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ From 0fba5ae02101b358aa4938d35471356b75e0e615 Mon Sep 17 00:00:00 2001 From: fanquake Date: Wed, 30 Jul 2025 11:10:16 +0100 Subject: [PATCH 2/6] ci: allow libc++ instrumentation other than msan Github-Pull: #33099 Rebased-From: 6653cafd0b70b0e7a29c6cfe236d3bf9d1bce91e --- ci/test/00_setup_env_native_fuzz_with_msan.sh | 4 +-- ci/test/00_setup_env_native_msan.sh | 4 +-- ci/test/01_base_install.sh | 32 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/ci/test/00_setup_env_native_fuzz_with_msan.sh b/ci/test/00_setup_env_native_fuzz_with_msan.sh index a6e53dc8a2f..27b704017c4 100755 --- a/ci/test/00_setup_env_native_fuzz_with_msan.sh +++ b/ci/test/00_setup_env_native_fuzz_with_msan.sh @@ -7,7 +7,7 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" -LIBCXX_DIR="/msan/cxx_build/" +LIBCXX_DIR="/cxx_build/" export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls" LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument" export MSAN_AND_LIBCXX_FLAGS="${MSAN_FLAGS} ${LIBCXX_FLAGS}" @@ -27,7 +27,7 @@ export BITCOIN_CONFIG="\ -DSANITIZERS=fuzzer,memory \ -DAPPEND_CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE -U_FORTIFY_SOURCE' \ " -export USE_MEMORY_SANITIZER="true" +export USE_INSTRUMENTED_LIBCPP="MemoryWithOrigins" export RUN_UNIT_TESTS="false" export RUN_FUNCTIONAL_TESTS="false" export RUN_FUZZ_TESTS=true diff --git a/ci/test/00_setup_env_native_msan.sh b/ci/test/00_setup_env_native_msan.sh index effd8a9413d..b450a2ea1eb 100755 --- a/ci/test/00_setup_env_native_msan.sh +++ b/ci/test/00_setup_env_native_msan.sh @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" export APT_LLVM_V="20" -LIBCXX_DIR="/msan/cxx_build/" +LIBCXX_DIR="/cxx_build/" export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls" LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument" export MSAN_AND_LIBCXX_FLAGS="${MSAN_FLAGS} ${LIBCXX_FLAGS}" @@ -27,4 +27,4 @@ export BITCOIN_CONFIG="\ -DSANITIZERS=memory \ -DAPPEND_CPPFLAGS='-U_FORTIFY_SOURCE' \ " -export USE_MEMORY_SANITIZER="true" +export USE_INSTRUMENTED_LIBCPP="MemoryWithOrigins" diff --git a/ci/test/01_base_install.sh b/ci/test/01_base_install.sh index 36a7c43b3f1..4746a1f69d0 100755 --- a/ci/test/01_base_install.sh +++ b/ci/test/01_base_install.sh @@ -54,31 +54,31 @@ if [ -n "$PIP_PACKAGES" ]; then ${CI_RETRY_EXE} pip3 install --user $PIP_PACKAGES fi -if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then +if [[ -n "${USE_INSTRUMENTED_LIBCPP}" ]]; then if [ -n "${APT_LLVM_V}" ]; then - ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-$( clang --version | sed --silent 's@.*clang version \([0-9.]*\).*@\1@p' )" /msan/llvm-project + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-$( clang --version | sed --silent 's@.*clang version \([0-9.]*\).*@\1@p' )" /llvm-project else - ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.8" /msan/llvm-project + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.8" /llvm-project - cmake -G Ninja -B /msan/clang_build/ \ + cmake -G Ninja -B /clang_build/ \ -DLLVM_ENABLE_PROJECTS="clang" \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_TARGETS_TO_BUILD=Native \ -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \ - -S /msan/llvm-project/llvm + -S /llvm-project/llvm - ninja -C /msan/clang_build/ "$MAKEJOBS" - ninja -C /msan/clang_build/ install-runtimes + ninja -C /clang_build/ "$MAKEJOBS" + ninja -C /clang_build/ install-runtimes - update-alternatives --install /usr/bin/clang++ clang++ /msan/clang_build/bin/clang++ 100 - update-alternatives --install /usr/bin/clang clang /msan/clang_build/bin/clang 100 - update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /msan/clang_build/bin/llvm-symbolizer 100 + update-alternatives --install /usr/bin/clang++ clang++ /clang_build/bin/clang++ 100 + update-alternatives --install /usr/bin/clang clang /clang_build/bin/clang 100 + update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /clang_build/bin/llvm-symbolizer 100 fi - cmake -G Ninja -B /msan/cxx_build/ \ + cmake -G Ninja -B /cxx_build/ \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_USE_SANITIZER=MemoryWithOrigins \ + -DLLVM_USE_SANITIZER="${USE_INSTRUMENTED_LIBCPP}" \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DLLVM_TARGETS_TO_BUILD=Native \ @@ -86,13 +86,13 @@ if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ -DLIBCXX_ABI_DEFINES="_LIBCPP_ABI_BOUNDED_ITERATORS;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STRING;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_VECTOR;_LIBCPP_ABI_BOUNDED_UNIQUE_PTR" \ -DLIBCXX_HARDENING_MODE=debug \ - -S /msan/llvm-project/runtimes + -S /llvm-project/runtimes - ninja -C /msan/cxx_build/ "$MAKEJOBS" + ninja -C /cxx_build/ "$MAKEJOBS" # Clear no longer needed source folder - du -sh /msan/llvm-project - rm -rf /msan/llvm-project + du -sh /llvm-project + rm -rf /llvm-project fi if [[ "${RUN_TIDY}" == "true" ]]; then From f9939cdbe01fa090bd2ece90f5cbfb17120c2f24 Mon Sep 17 00:00:00 2001 From: fanquake Date: Wed, 30 Jul 2025 11:15:33 +0100 Subject: [PATCH 3/6] ci: instrument libc++ in TSAN job Qt is disabled, as the build is now taking a very long time. Github-Pull: #33099 Rebased-From: b09af2ce508185086bb551bfeb1409355c897e7b --- .cirrus.yml | 2 +- ci/test/00_setup_env_native_tsan.sh | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 393237af66b..6e70dc15fec 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -158,7 +158,7 @@ task: FILE_ENV: "./ci/test/00_setup_env_native_previous_releases.sh" task: - name: 'TSan, depends, gui' + name: 'TSan, depends, no gui' << : *GLOBAL_TASK_TEMPLATE persistent_worker: labels: diff --git a/ci/test/00_setup_env_native_tsan.sh b/ci/test/00_setup_env_native_tsan.sh index c8d9c8455f4..dce63d51515 100755 --- a/ci/test/00_setup_env_native_tsan.sh +++ b/ci/test/00_setup_env_native_tsan.sh @@ -9,8 +9,11 @@ export LC_ALL=C.UTF-8 export CONTAINER_NAME=ci_native_tsan export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" export APT_LLVM_V="20" -export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev libc++abi-${APT_LLVM_V}-dev libc++-${APT_LLVM_V}-dev python3-zmq" -export DEP_OPTS="CC=clang CXX='clang++ -stdlib=libc++'" +LIBCXX_DIR="/cxx_build/" +LIBCXX_FLAGS="-fsanitize=thread -nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument" +export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev libclang-${APT_LLVM_V}-dev libclang-rt-${APT_LLVM_V}-dev python3-zmq ninja-build" +export DEP_OPTS="CC=clang CXX=clang++ CXXFLAGS='${LIBCXX_FLAGS}' NO_QT=1" export GOAL="install" export BITCOIN_CONFIG="-DWITH_ZMQ=ON -DSANITIZERS=thread \ -DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES'" +export USE_INSTRUMENTED_LIBCPP="Thread" From 5513516241463333548600f691a861dba4c1d5c5 Mon Sep 17 00:00:00 2001 From: fanquake Date: Wed, 30 Jul 2025 11:15:54 +0100 Subject: [PATCH 4/6] ci: remove DEBUG_LOCKORDER from TSAN job Github-Pull: #33099 Rebased-From: 7aa5b67132dfb71e915675a3dbcb806284e08197 --- ci/test/00_setup_env_native_tsan.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/test/00_setup_env_native_tsan.sh b/ci/test/00_setup_env_native_tsan.sh index dce63d51515..7d8d0cf203c 100755 --- a/ci/test/00_setup_env_native_tsan.sh +++ b/ci/test/00_setup_env_native_tsan.sh @@ -15,5 +15,5 @@ export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev l export DEP_OPTS="CC=clang CXX=clang++ CXXFLAGS='${LIBCXX_FLAGS}' NO_QT=1" export GOAL="install" export BITCOIN_CONFIG="-DWITH_ZMQ=ON -DSANITIZERS=thread \ --DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES'" +-DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKCONTENTION -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES'" export USE_INSTRUMENTED_LIBCPP="Thread" From ea40fa95d9af004d85187bee9d8efe278c888d8f Mon Sep 17 00:00:00 2001 From: fanquake Date: Tue, 26 Aug 2025 16:49:38 +0100 Subject: [PATCH 5/6] ci: use LLVM 21 Github-Pull: #33258 Rebased-From: 4cf0ae474ba03830c86653f1abae4ab4d38c94e4 --- ci/test/00_setup_env_native_asan.sh | 2 +- ci/test/00_setup_env_native_fuzz.sh | 2 +- ci/test/00_setup_env_native_msan.sh | 2 +- ci/test/00_setup_env_native_tsan.sh | 2 +- ci/test/01_base_install.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/test/00_setup_env_native_asan.sh b/ci/test/00_setup_env_native_asan.sh index 9f562df4647..dbfcc259d66 100755 --- a/ci/test/00_setup_env_native_asan.sh +++ b/ci/test/00_setup_env_native_asan.sh @@ -19,7 +19,7 @@ else fi export CONTAINER_NAME=ci_native_asan -export APT_LLVM_V="20" +export APT_LLVM_V="21" export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev python3-zmq qtbase5-dev qttools5-dev qttools5-dev-tools libevent-dev libboost-dev libdb5.3++-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE}" export NO_DEPENDS=1 export GOAL="install" diff --git a/ci/test/00_setup_env_native_fuzz.sh b/ci/test/00_setup_env_native_fuzz.sh index f80c4d988de..d81cbcf228f 100755 --- a/ci/test/00_setup_env_native_fuzz.sh +++ b/ci/test/00_setup_env_native_fuzz.sh @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" export CONTAINER_NAME=ci_native_fuzz -export APT_LLVM_V="20" +export APT_LLVM_V="21" export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev libevent-dev libboost-dev libsqlite3-dev" export NO_DEPENDS=1 export RUN_UNIT_TESTS=false diff --git a/ci/test/00_setup_env_native_msan.sh b/ci/test/00_setup_env_native_msan.sh index b450a2ea1eb..879e82d55a4 100755 --- a/ci/test/00_setup_env_native_msan.sh +++ b/ci/test/00_setup_env_native_msan.sh @@ -7,7 +7,7 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" -export APT_LLVM_V="20" +export APT_LLVM_V="21" LIBCXX_DIR="/cxx_build/" export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls" LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument" diff --git a/ci/test/00_setup_env_native_tsan.sh b/ci/test/00_setup_env_native_tsan.sh index 7d8d0cf203c..6286e39d842 100755 --- a/ci/test/00_setup_env_native_tsan.sh +++ b/ci/test/00_setup_env_native_tsan.sh @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8 export CONTAINER_NAME=ci_native_tsan export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" -export APT_LLVM_V="20" +export APT_LLVM_V="21" LIBCXX_DIR="/cxx_build/" LIBCXX_FLAGS="-fsanitize=thread -nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument" export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev libclang-${APT_LLVM_V}-dev libclang-rt-${APT_LLVM_V}-dev python3-zmq ninja-build" diff --git a/ci/test/01_base_install.sh b/ci/test/01_base_install.sh index 4746a1f69d0..25a03d5f503 100755 --- a/ci/test/01_base_install.sh +++ b/ci/test/01_base_install.sh @@ -58,7 +58,7 @@ if [[ -n "${USE_INSTRUMENTED_LIBCPP}" ]]; then if [ -n "${APT_LLVM_V}" ]; then ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-$( clang --version | sed --silent 's@.*clang version \([0-9.]*\).*@\1@p' )" /llvm-project else - ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-20.1.8" /llvm-project + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-21.1.0" /llvm-project cmake -G Ninja -B /clang_build/ \ -DLLVM_ENABLE_PROJECTS="clang" \ From 7c6be9acae5a16956a7f8e53ae3f944a187a6713 Mon Sep 17 00:00:00 2001 From: fanquake Date: Fri, 5 Sep 2025 12:04:09 +0100 Subject: [PATCH 6/6] doc: update release notes for 29.x --- doc/release-notes.md | 183 ++----------------------------------------- 1 file changed, 5 insertions(+), 178 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 923d34a99bb..b73e52dc570 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,6 +1,6 @@ -Bitcoin Core version 29.1 is now available from: +Bitcoin Core version 29.x is now available from: - + This release includes various bug fixes and performance improvements, as well as updated translations. @@ -37,192 +37,19 @@ unsupported systems. Notable changes =============== -### Mempool Policy - -- The maximum number of potentially executed legacy signature operations in a - single standard transaction is now limited to 2500. Signature operations in all - previous output scripts, in all input scripts, as well as all P2SH redeem - scripts (if there are any) are counted toward the limit. The new limit is - assumed to not affect any known typically formed standard transactions. The - change was done to prepare for a possible BIP54 deployment in the future. - -- #32521 policy: make pathological transactions packed with legacy sigops non-standard - -- The minimum block feerate (`-blockmintxfee`) has been changed to 1 satoshi per kvB. It can still be changed using the -configuration option. - -- The default minimum relay feerate (`-minrelaytxfee`) and incremental relay feerate (`-incrementalrelayfee`) have been -changed to 100 satoshis per kvB. They can still be changed using their respective configuration options, but it is -recommended to change both together if you decide to do so. - - Other minimum feerates (e.g. the dust feerate, the minimum returned by the fee estimator, and all feerates used by - the wallet) remain unchanged. The mempool minimum feerate still changes in response to high volume. - - Note that unless these lower defaults are widely adopted across the network, transactions created with lower fee - rates are not guaranteed to propagate or confirm. The wallet feerates remain unchanged; `-mintxfee` must be changed - before attempting to create transactions with lower feerates using the wallet. - -- #33106 policy: lower the default blockmintxfee, incrementalrelayfee, minrelaytxfee - -### Logging - -Unconditional logging to disk is now rate limited by giving each source location -a quota of 1MiB per hour. Unconditional logging is any logging with a log level -higher than debug, that is `info`, `warning`, and `error`. All logs will be -prefixed with `[*]` if there is at least one source location that is currently -being suppressed. (#32604) - -When `-logsourcelocations` is enabled, the log output now contains the entire -function signature instead of just the function name. (#32604) - -### RPC - -- The `dumptxoutset` RPC now requires a `type` parameter to be specified. To maintain pre - v29.0 behavior, use the `latest` parameter. Documenting this change was missed in the v29.0 - release notes. (#30808) - -### Updated Settings - -- The `-maxmempool` and `-dbcache` startup parameters are now capped on - 32-bit systems to 500MB and 1GiB respectively. - -- #32530 node: cap -maxmempool and -dbcache values for 32-bit - -### Wallet - -- #31757 wallet: fix crash on double block disconnection -- #32553 wallet: Fix logging of wallet version - -### P2P - -- #32826 p2p: add more bad ports - -### Test - -- #32069 test: fix intermittent failure in wallet_reorgsrestore.py -- #32286 test: Handle empty string returned by CLI as None in RPC tests -- #32312 test: Fix feature_pruning test after nTime typo fix -- #32336 test: Suppress upstream -Wduplicate-decl-specifier in bpfcc -- #32463 test: fix an incorrect feature_fee_estimation.py subtest -- #32483 test: fix two intermittent failures in wallet_basic.py -- #32630 test: fix sync function in rpc_psbt.py -- #32765 test: Fix list index out of range error in feature_bip68_sequence.py -- #32742 test: fix catchup loop in outbound eviction functional test -- #32823 test: Fix wait_for_getheaders() call in test_outbound_eviction_blocks_relay_only() -- #32833 test: Add msgtype to msg_generic slots -- #32841 feature_taproot: sample tx version border values more -- #32850 test: check P2SH sigop count for coinbase tx -- #32859 test: correctly detect nonstd TRUC tx vsize in feature_taproot -- #33001 test: Do not pass tests on unhandled exceptions - -### Indexes - -- #33212 index: Don't commit state in BaseIndex::Rewind - -### Util - -- #32248 Remove support for RNDR/RNDRRS for aarch64 - -### Build - -- #32356 cmake: Respect user-provided configuration-specific flags -- #32437 crypto: disable ASan for sha256_sse4 with Clang -- #32469 cmake: Allow WITH_DBUS on all Unix-like systems -- #32439 guix: accomodate migration to codeberg -- #32551 cmake: Add missed SSE41_CXXFLAGS -- #32568 depends: use "mkdir -p" when installing xproto -- #32678 guix: warn and abort when SOURCE_DATE_EPOCH is set -- #32690 depends: fix SHA256SUM command on OpenBSD (use GNU mode output) -- #32716 depends: Override host compilers for FreeBSD and OpenBSD -- #32760 depends: capnp 1.2.0 -- #32798 build: add root dir to CMAKE_PREFIX_PATH in toolchain -- #32805 cmake: Use HINTS instead of PATHS in find_* commands -- #32814 cmake: Explicitly specify Boost_ROOT for Homebrew's package -- #32837 depends: fix libevent _WIN32_WINNT usage -- #32943 depends: Force CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE -- #32954 cmake: Drop no longer necessary "cmakeMinimumRequired" object -- #33073 guix: warn SOURCE_DATE_EPOCH set in guix-codesign - -### Gui - -- #864 Crash fix, disconnect numBlocksChanged() signal during shutdown -- #868 Replace stray tfm::format to cerr with qWarning - -### Doc - -- #32333 doc: Add missing top-level description to pruneblockchain RPC -- #32353 doc: Fix fuzz test_runner.py path -- #32389 doc: Fix test_bitcoin path -- #32607 rpc: Note in fundrawtransaction doc, fee rate is for package -- #32679 doc: update tor docs to use bitcoind binary from path -- #32693 depends: fix cmake compatibility error for freetype -- #32696 doc: make -DWITH_ZMQ=ON explicit on build-unix.md -- #32708 rpc, doc: update listdescriptors RCP help -- #32711 doc: add missing packages for BSDs (cmake, gmake, curl) to depends/README.md -- #32719 doc, windows: CompanyName "Bitcoin" => "Bitcoin Core project" -- #32776 doc: taproot became always active in v24.0 -- #32777 doc: fix Transifex 404s -- #32846 doc: clarify that the "-j N" goes after the "--build build" part -- #32858 doc: Add workaround for vcpkg issue with paths with embedded spaces -- #33070 doc/zmq: fix unix socket path example -- #33088 doc: move cmake -B build -LH up in Unix build docs -- #33133 rpc: fix getpeerinfo ping duration unit docs -- #33119 rpc: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify fix -- #33236 doc: Remove wrong and redundant doxygen tag - ### CI -- #32184 ci: Add workaround for vcpkg's libevent package -- #33261 ci: return to using dash in CentOS job - -### Misc - -- #32187 refactor: Remove spurious virtual from final ~CZMQNotificationInterface -- #32454 tracing: fix invalid argument in mempool_monitor -- #32771 contrib: tracing: Fix read of pmsg_type in p2p_monitor.py -- #33086 contrib: [tracing] fix pointer argument handling in mempool_monitor.py +- #32999 ci: Use APT_LLVM_V in msan task +- #33099 ci: allow for any libc++ intrumentation & use it for TSAN +- #33258 ci: use LLVM 21 Credits ======= Thanks to everyone who directly contributed to this release: -- 0xB10C -- achow101 -- Antoine Poinsot -- benthecarman -- bigspider -- Brandon Odiwuor -- brunoerg -- Bufo -- Christewart -- Crypt-iQ -- davidgumberg -- deadmanoz -- dergoegge -- enirox001 - fanquake -- furszy -- glozow -- instagibbs -- Hennadii Stepanov -- hodlinator -- ismaelsadeeq -- jb55 -- jlopp -- josibake -- laanwj -- luisschwab - MarcoFalke -- Martin Zumsande -- monlovesmango -- nervana21 -- pablomartin4btc -- rkrux -- romanz -- ryanofsky -- Sjors -- theStack -- willcl-ark -- zaidmstrr As well as to everyone that helped with translations on [Transifex](https://explore.transifex.com/bitcoin/bitcoin/).