blob: c79e92ec866b589f50dbc12640bd5ab001a4732d [file] [log] [blame] [edit]
name: sanitizers
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-24.04
name: ${{ matrix.name }}
env:
CC: clang
CXX: clang++
ASAN_OPTIONS: log_path=stderr:halt_on_error=1:abort_on_error=1
UBSAN_OPTIONS: log_path=stderr:halt_on_error=1:abort_on_error=1:print_stacktrace=1
TSAN_OPTIONS: log_path=stderr:halt_on_error=1:abort_on_error=1
MSAN_OPTIONS: log_path=stderr:halt_on_error=1:abort_on_error=1:print_stacktrace=1
strategy:
fail-fast: false
matrix:
include:
- name: asan-ubsan
SANITIZE: address,undefined
- name: tsan
SANITIZE: thread
- name: msan
SANITIZE: memory
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt install -y \
clang \
lld \
binutils \
pkg-config \
libfreetype6-dev \
libglib2.0-dev \
libcairo2-dev \
libicu-dev \
libgraphite2-dev
- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: '3.12'
- name: Install Python Dependencies
run: pip3 install -r .ci/requirements.txt --require-hashes
- name: Setup Meson
run: |
ccache --version
meson setup build \
--default-library=static \
--buildtype=debugoptimized \
--wrap-mode=nodownload \
-Db_sanitize=${{ matrix.SANITIZE }} \
-Dexperimental_api=true
- name: Build
run: meson compile -Cbuild
- name: Test
run: meson test -Cbuild -t 10 --print-errorlogs | asan_symbolize | c++filt