From 88d278e668261a1e62c701656e3b80d3e9fec492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Mon, 12 Feb 2024 11:04:24 +0100 Subject: [PATCH] MACOS SANITIZERS --- .github/workflows/code_sanitizers.yml | 64 +++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/.github/workflows/code_sanitizers.yml b/.github/workflows/code_sanitizers.yml index d98587aa11..1794d0d667 100644 --- a/.github/workflows/code_sanitizers.yml +++ b/.github/workflows/code_sanitizers.yml @@ -1,6 +1,6 @@ name: Code Sanitizers -on: [push, pull_request, workflow_dispatch] +on: [ push, pull_request, workflow_dispatch ] jobs: linux_sanitizers: @@ -9,8 +9,8 @@ jobs: strategy: fail-fast: false matrix: - BACKEND: [lmdb, rocksdb] - COMPILER: [clang] + BACKEND: [ lmdb, rocksdb ] + COMPILER: [ clang ] SANITIZER: - { name: UBSAN, ignore_errors: false } - { name: ASAN, ignore_errors: true } @@ -58,3 +58,61 @@ jobs: continue-on-error: ${{ env.IGNORE_ERRORS == 'true' }} run: ../ci/tests/show-sanitizer-reports.sh working-directory: build + + + macos_sanitizers: + name: macOS [${{ matrix.SANITIZER.name }}] [${{ matrix.BACKEND }} | ${{ matrix.COMPILER }}] ${{ matrix.SANITIZER.ignore_errors && ' (Errors Ignored)' || '' }} + timeout-minutes: 120 + strategy: + fail-fast: false + matrix: + BACKEND: [ lmdb, rocksdb ] + COMPILER: [ clang ] + SANITIZER: + - { name: UBSAN, ignore_errors: false } + - { name: ASAN, ignore_errors: true } + - { name: ASAN_INT, ignore_errors: true } + - { name: TSAN, ignore_errors: true } + runs-on: macos-14 + env: + COMPILER: ${{ matrix.COMPILER }} + BACKEND: ${{ matrix.BACKEND }} + SANITIZER: ${{ matrix.SANITIZER.name }} + IGNORE_ERRORS: ${{ matrix.SANITIZER.ignore_errors }} + TEST_USE_ROCKSDB: ${{ matrix.BACKEND == 'rocksdb' && '1' || '0' }} + DEADLINE_SCALE_FACTOR: ${{ matrix.BACKEND == 'rocksdb' && '2' || '1' }} + ASAN_OPTIONS: log_exe_name=1:log_path=sanitizer_report:suppressions=../asan_suppressions + TSAN_OPTIONS: log_exe_name=1:log_path=sanitizer_report:suppressions=../tsan_suppressions + UBSAN_OPTIONS: log_exe_name=1:log_path=sanitizer_report:print_stacktrace=1 + if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: "recursive" + + - name: Prepare + run: ci/prepare/macos/prepare.sh + + - name: Build Tests + id: build + run: ci/build-tests.sh + + - name: Core Tests + if: steps.build.outcome == 'success' && (success() || failure()) + continue-on-error: true + run: timeout -sKILL 45m ../ci/tests/run-core-tests.sh + working-directory: build + + - name: RPC Tests + if: steps.build.outcome == 'success' && (success() || failure()) + continue-on-error: true + run: timeout -sKILL 20m ../ci/tests/run-rpc-tests.sh + working-directory: build + + - name: Reports + if: steps.build.outcome == 'success' && (success() || failure()) + continue-on-error: ${{ env.IGNORE_ERRORS == 'true' }} + run: ../ci/tests/show-sanitizer-reports.sh + working-directory: build +