1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- 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@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.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
|