blob: ac154767fe80159d84ef9f4025ee220e5433dec9 [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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- 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@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.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