Files
TheRock/rocm-systems/.github/workflows/profiler-hub-sanitizers.yml
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

138 lines
5.0 KiB
YAML

name: profiler-hub Sanitizers
run-name: profiler-hub-sanitizers
on:
workflow_dispatch:
push:
branches:
- develop
paths:
- '.github/workflows/profiler-hub-sanitizers.yml'
- 'profilers/profiler-hub/**'
- '!profilers/profiler-hub/build/**'
- '!profilers/profiler-hub/docs/**'
- '!profilers/profiler-hub/README.md'
pull_request:
branches:
- develop
paths:
- '.github/workflows/profiler-hub-sanitizers.yml'
- 'profilers/profiler-hub/**'
- '!profilers/profiler-hub/build/**'
- '!profilers/profiler-hub/docs/**'
- '!profilers/profiler-hub/README.md'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
sanitizer:
name: ${{ matrix.sanitizer.name }}
runs-on: ubuntu-24.04
timeout-minutes: 30
env:
SUPPRESSIONS_DIR: ${{ github.workspace }}/profilers/profiler-hub/.sanitizer-suppressions
strategy:
fail-fast: false
matrix:
sanitizer:
# ASan/UBSan run at -O0 (Debug default); stack traces are usable as-is.
# Note: detect_leaks=1 + halt_on_error=1 means a leaking but otherwise-passing
# test will still fail the job. Leaks are reported at process exit.
- name: asan-ubsan
cflags: '-fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize-recover=all'
ldflags: '-fsanitize=address,undefined'
test_wrap: ''
# TSan runs at -O1: at -O0 the compiler does not reorder enough to expose
# races that production builds will hit. -O1 keeps stack traces readable.
- name: tsan
cflags: '-fsanitize=thread -fno-omit-frame-pointer -O1'
ldflags: '-fsanitize=thread'
test_wrap: 'setarch $(uname -m) -R'
steps:
- uses: actions/checkout@v6
with:
sparse-checkout: |
profilers/profiler-hub
.github/workflows
# cmake, gcc/g++, util-linux are preinstalled on ubuntu-24.04 runners.
# The sqlite3/spdlog/fmt/nlohmann_json system packages are intentionally
# omitted: the project's cmake/{sqlite3,spdlog,nlohmann_json}.cmake fall
# back to FetchContent when find_package fails, so deps build with the
# sanitizer flags applied. System libs built without -fsanitize would
# produce false-positive reports.
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgtest-dev libgmock-dev libbenchmark-dev
- name: Cache ccache
uses: actions/cache@v6
with:
path: ~/.cache/ccache
key: ccache-${{ matrix.sanitizer.name }}-${{ github.sha }}
restore-keys: |
ccache-${{ matrix.sanitizer.name }}-
- name: Setup ccache
run: |
sudo apt-get install -y ccache
ccache --max-size=1G
ccache --zero-stats
- name: Configure
working-directory: profilers/profiler-hub
env:
CC: gcc
CXX: g++
run: |
cmake --version
${CXX} --version
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Debug \
-DPROFILER_HUB_BUILD_TESTS=ON \
-DPROFILER_HUB_BUILD_BENCHMARKS=OFF \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="${{ matrix.sanitizer.cflags }}" \
-DCMAKE_CXX_FLAGS="${{ matrix.sanitizer.cflags }}" \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.sanitizer.ldflags }}" \
-DCMAKE_SHARED_LINKER_FLAGS="${{ matrix.sanitizer.ldflags }}"
- name: Build
working-directory: profilers/profiler-hub
run: cmake --build build --parallel $(nproc)
- name: ccache stats
run: ccache --show-stats
- name: Test (ASan + UBSan)
if: matrix.sanitizer.name == 'asan-ubsan'
working-directory: profilers/profiler-hub/build
env:
ASAN_OPTIONS: 'detect_leaks=1:abort_on_error=0:halt_on_error=1:print_summary=1:suppressions=${{ env.SUPPRESSIONS_DIR }}/asan.supp'
LSAN_OPTIONS: 'suppressions=${{ env.SUPPRESSIONS_DIR }}/lsan.supp'
UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1:print_summary=1:suppressions=${{ env.SUPPRESSIONS_DIR }}/ubsan.supp'
run: ctest --output-on-failure --output-junit test-results.xml
- name: Test (TSan)
if: matrix.sanitizer.name == 'tsan'
working-directory: profilers/profiler-hub/build
env:
TSAN_OPTIONS: 'halt_on_error=1:second_deadlock_stack=1:print_summary=1:suppressions=${{ env.SUPPRESSIONS_DIR }}/tsan.supp'
run: ${{ matrix.sanitizer.test_wrap }} ctest --output-on-failure --output-junit test-results.xml
- name: Upload test results
if: always()
uses: actions/upload-artifact@v7
with:
name: sanitizer-results-${{ matrix.sanitizer.name }}
path: profilers/profiler-hub/build/test-results.xml
if-no-files-found: warn