From 19a28d82af105754ab2a49171deaefa5e06312cd Mon Sep 17 00:00:00 2001 From: Konstantin Akimov Date: Tue, 11 Aug 2026 22:08:44 +0700 Subject: [PATCH] ci: drop Berkeley DB from the asan job, extend the Qt lsan suppressions The asan job reports leaks owned by two dependencies: Berkeley DB's lock table and memory-pool file metadata, and Qt's process-global DBus connection manager. For Berkeley DB, do what upstream did in 04a7a7a28c and stop building it in this job. Upstream's asan job carried -DWITH_BDB=ON and libdb5.3++-dev until that commit, ran the same tool_wallet.py and wallet_hd.py, and never needed a Berkeley DB entry in test/sanitizer_suppressions/lsan; the file has never contained one. BerkeleyEnvironment::Close() here is identical to the last upstream version, so the difference is not wallet code but the dependency: upstream linked the system libdb 5.3 shared library, while this job takes DEP_OPTS="" and so links 4.8.30 statically out of depends. The msan job is already configured the same way. Qt still needs a suppression, and by symbol rather than by module. Upstream suppresses Qt with leak:libQt6Widgets, which only works for a shared library; with Qt linked statically from depends the allocation belongs to the executable and that form cannot match. Upstream hit this in 5be31b20e5 and answered it with per-symbol rules, so add QDBusConnectionManager next to the two symbols already taken from that commit. --- ci/test/00_setup_env_native_asan.sh | 4 ++-- test/sanitizer_suppressions/lsan | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/test/00_setup_env_native_asan.sh b/ci/test/00_setup_env_native_asan.sh index c3029cfe68b4..909c42ece182 100755 --- a/ci/test/00_setup_env_native_asan.sh +++ b/ci/test/00_setup_env_native_asan.sh @@ -7,12 +7,12 @@ export LC_ALL=C.UTF-8 export CONTAINER_NAME=ci_native_asan -export PACKAGES="clang-19 llvm-19 libclang-rt-19-dev python3-zmq qtbase5-dev qttools5-dev-tools libevent-dev bsdmainutils libboost-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libqrencode-dev" +export PACKAGES="clang-19 llvm-19 libclang-rt-19-dev python3-zmq qtbase5-dev qttools5-dev-tools libevent-dev bsdmainutils libboost-dev libminiupnpc-dev libzmq3-dev libqrencode-dev" # Reuses the depends built for the linux64 target, which uses the defaults. export DEP_OPTS="" export TEST_RUNNER_EXTRA="--timeout-factor=4 -j2" # Increase timeout because sanitizers slow down export GOAL="install" -export BITCOIN_CONFIG="--enable-zmq --enable-crash-hooks --with-gui=qt5 \ +export BITCOIN_CONFIG="--enable-zmq --enable-crash-hooks --with-gui=qt5 --without-bdb --with-sqlite \ --with-sanitizers=address,float-divide-by-zero,integer,undefined \ CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' \ CC='clang-19 -ftrivial-auto-var-init=pattern' CXX='clang++-19 -ftrivial-auto-var-init=pattern'" diff --git a/test/sanitizer_suppressions/lsan b/test/sanitizer_suppressions/lsan index fc1d82f45976..1f21de07afd5 100644 --- a/test/sanitizer_suppressions/lsan +++ b/test/sanitizer_suppressions/lsan @@ -1,4 +1,5 @@ # Suppress warnings triggered in dependencies leak:libQt5Widgets leak:QDBusConnectionPrivate +leak:QDBusConnectionManager leak:QLayoutPrivate