From 1bb3b5c7bb48c0ebac7a96083d5c020fd9741bd4 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Wed, 4 Feb 2026 18:59:13 +0000 Subject: [PATCH] ci: Add ASAN Qt 6.11 builds Comes from KDAB's prebuilt Qt with ASAN. TSAN is not needed, as KDSME doesn't use threads. LSAN to be enabled if build passes --- .github/workflows/build-sanitizers.yml | 60 ++++++++++++++++++++++++++ CMakePresets.json | 10 +++++ 2 files changed, 70 insertions(+) create mode 100644 .github/workflows/build-sanitizers.yml diff --git a/.github/workflows/build-sanitizers.yml b/.github/workflows/build-sanitizers.yml new file mode 100644 index 00000000..7e7d940e --- /dev/null +++ b/.github/workflows/build-sanitizers.yml @@ -0,0 +1,60 @@ +# SPDX-FileCopyrightText: 2026 Klarälvdalens Datakonsult AB, a KDAB Group company +# +# SPDX-License-Identifier: MIT + +name: CI (Sanitizers) + +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-24.04 + preset: ['dev6-asan'] + include: + - preset: dev6-asan + qt-flavor: asan + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Checkout sources + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Sanitized Qt + uses: KDABLabs/sanitized-qt-action@v1 + with: + qt-tag: "v6.11.0-beta2" + qt-flavor: ${{ matrix.qt-flavor }} + + - name: Configure project + run: > + cmake --preset=${{ matrix.preset }} + -DCMAKE_BUILD_TYPE=Debug + -DBUILD_TESTING=OFF + -DKDSME_EXAMPLES=ON + -DKDSME_DOCS=OFF + -DBUILD_SHARED_LIBS=OFF + + - name: Build Project + run: cmake --build ./build-${{ matrix.preset }} + + - name: Run tests on Linux (offscreen) + run: | + ctest --test-dir ./build-${{ matrix.preset }} --output-on-failure + env: + QT_QPA_PLATFORM: offscreen + LSAN_OPTIONS: "detect_leaks=0" diff --git a/CMakePresets.json b/CMakePresets.json index be2099a1..1230ebae 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -53,6 +53,16 @@ "KDSME_INTERNAL_GRAPHVIZ": "ON" } }, + { + "name": "dev6-asan", + "inherits": "dev6", + "binaryDir": "${sourceDir}/build-dev6-asan", + "cacheVariables": { + "CMAKE_CXX_FLAGS": "-DQT_FORCE_ASSERTS -fsanitize=address -fsanitize=undefined -fno-optimize-sibling-calls", + "CMAKE_SHARED_LINKER_FLAGS": "-fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer", + "CMAKE_EXE_LINKER_FLAGS": "-fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer" + } + }, { "name": "rel-base", "description": "rel-base",