ci: use ASan/UBsan in bluetooth tests

Compile with sanitizers for the bluetooth tests, for better backtraces
on failures. Also produce backtraces via gdb.
This commit is contained in:
Pauli Virtanen 2026-05-09 14:05:58 +03:00 committed by Wim Taymans
parent ef35aa161b
commit db5cb6515a
3 changed files with 34 additions and 4 deletions

View file

@ -18,7 +18,7 @@ stages:
variables: variables:
FDO_UPSTREAM_REPO: 'pipewire/pipewire' FDO_UPSTREAM_REPO: 'pipewire/pipewire'
BLUEZ_COMMIT: '7cd27f4f66aa88194fbc1565bc13f24405acacd8' BLUEZ_COMMIT: '7cd27f4f66aa88194fbc1565bc13f24405acacd8'
PYTEST_BLUEZENV_VERSION: '0.1.2' PYTEST_BLUEZENV_VERSION: 'pytest-bluezenv==0.1.4'
BLUEZENV_BZIMAGE: 'https://github.com/pv/bluez-test-functional-kernel/releases/download/2026-05-08.1/bzImage-v7.0-cfg3ed20edd' BLUEZENV_BZIMAGE: 'https://github.com/pv/bluez-test-functional-kernel/releases/download/2026-05-08.1/bzImage-v7.0-cfg3ed20edd'
# ci-templates as of Mar 25th 2024 # ci-templates as of Mar 25th 2024
@ -41,7 +41,7 @@ include:
.fedora: .fedora:
variables: variables:
# Update this tag when you want to trigger a rebuild # Update this tag when you want to trigger a rebuild
FDO_DISTRIBUTION_TAG: '2026-05-09.0' FDO_DISTRIBUTION_TAG: '2026-05-09.8'
FDO_DISTRIBUTION_VERSION: '44' FDO_DISTRIBUTION_VERSION: '44'
FDO_DISTRIBUTION_PACKAGES: >- FDO_DISTRIBUTION_PACKAGES: >-
alsa-lib-devel alsa-lib-devel
@ -60,6 +60,7 @@ include:
findutils findutils
gcc gcc
gcc-c++ gcc-c++
gdb
git git
glib-devel glib-devel
graphviz graphviz
@ -490,13 +491,20 @@ bluez_tests:
-Dsnap=disabled -Dsnap=disabled
-Droc=disabled -Droc=disabled
-Dlibcamera=disabled -Dlibcamera=disabled
-Db_sanitize=address,undefined
-Ddebug=true
-Doptimization=g
before_script: before_script:
- !reference [.build_on_fedora, before_script] - !reference [.build_on_fedora, before_script]
- python3 -m pip install /bluez/pytest_bluezenv-*.whl - python3 -m pip install /bluez/pytest_bluezenv-*.whl
script: script:
- meson setup "$BUILD_DIR" --prefix="$PREFIX" $MESON_OPTIONS - meson setup "$BUILD_DIR" --prefix="$PREFIX" $MESON_OPTIONS
- meson compile -C "$BUILD_DIR" $COMPILE_ARGS - meson compile -C "$BUILD_DIR" $COMPILE_ARGS
- export UBSAN_OPTIONS=abort_on_error=1:print_summary=1:print_stacktrace=1
- export ASAN_OPTIONS=abort_on_error=1:print_summary=1:detect_leaks=1:leak_check_at_exit=0
- meson devenv -C "$BUILD_DIR" -w . python3 -m pytest test --kernel /bluez/bzImage* --bluez-src-dir /bluez -ra -vvv --reruns 1 --vm-timeout 30 - meson devenv -C "$BUILD_DIR" -w . python3 -m pytest test --kernel /bluez/bzImage* --bluez-src-dir /bluez -ra -vvv --reruns 1 --vm-timeout 30
after_script:
- ./.gitlab/ci/core-backtrace.sh *core
build_on_alpine: build_on_alpine:
extends: extends:

22
.gitlab/ci/core-backtrace.sh Executable file
View file

@ -0,0 +1,22 @@
#!/bin/sh
#
# core-backtrace.sh COREFILE...
#
# Print backtraces from core dump files
#
set -e
for f in "$@"; do
if [ ! -e "$f" ]; then
continue
fi
echo "#"
echo "# --- $f ---"
echo "#"
exe=$(gdb -q -c "$f" -ex 'info auxv' -ex quit | sed -n -e '/AT_EXECFN/ { s/^[^"]*"//; s/"$//; p; }')
if [ -f "$exe" ]; then
gdb -q "$exe" "$f" -ex 'thr a a bt full' -ex quit
else
gdb -q -c "$f" -ex 'thr a a bt full' -ex quit
fi
done

View file

@ -14,7 +14,7 @@ fi
git clone --depth 1 --revision "$BLUEZ_COMMIT" https://github.com/bluez/bluez.git /bluez-build git clone --depth 1 --revision "$BLUEZ_COMMIT" https://github.com/bluez/bluez.git /bluez-build
cd /bluez-build cd /bluez-build
./bootstrap ./bootstrap
./configure --enable-tools --disable-obex ./configure --enable-tools --disable-obex --enable-asan --enable-ubsan --enable-debug
# shellcheck disable=SC2086 # shellcheck disable=SC2086
make $COMPILE_ARGS make $COMPILE_ARGS
cd / cd /
@ -26,7 +26,7 @@ cp /bluez-build/tools/btmgmt /bluez/tools/
cp /bluez-build/src/bluetoothd /bluez/src/ cp /bluez-build/src/bluetoothd /bluez/src/
cd /bluez cd /bluez
python3 -m pip wheel --no-deps "pytest-bluezenv==$PYTEST_BLUEZENV_VERSION" python3 -m pip wheel --no-deps "$PYTEST_BLUEZENV_VERSION"
curl -L "$BZIMAGE_URL" -o bzImage curl -L "$BZIMAGE_URL" -o bzImage
cd / cd /