name: Sanitizers on: push: branches: [ main, master ] pull_request: branches: [ main, master ] jobs: build-and-test: runs-on: ubuntu-latest env: SANITIZERS: "-fsanitize=address,undefined -fno-omit-frame-pointer -g -O1" ASAN_OPTIONS: "detect_leaks=1:abort_on_error=1" UBSAN_OPTIONS: "print_stacktrace=1" steps: - name: Checkout uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y cmake build-essential clang - name: Configure (CMake) run: | mkdir -p build-sanitizers cd build-sanitizers CC=clang CXX=clang++ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="$SANITIZERS" -DCMAKE_EXE_LINKER_FLAGS="$SANITIZERS" .. - name: Build run: | cd build-sanitizers cmake --build . -- -j - name: Run tests run: | cd build-sanitizers ctest --output-on-failure || (echo "ctest failed"; exit 1)