1e66f31c5Sopenharmony_ciname: Sanitizer checks 2e66f31c5Sopenharmony_ci 3e66f31c5Sopenharmony_cion: 4e66f31c5Sopenharmony_ci pull_request: 5e66f31c5Sopenharmony_ci paths: 6e66f31c5Sopenharmony_ci - '**' 7e66f31c5Sopenharmony_ci - '!docs/**' 8e66f31c5Sopenharmony_ci - '!.**' 9e66f31c5Sopenharmony_ci - '.github/workflows/sanitizer.yml' 10e66f31c5Sopenharmony_ci push: 11e66f31c5Sopenharmony_ci branches: 12e66f31c5Sopenharmony_ci - v[0-9].* 13e66f31c5Sopenharmony_ci - master 14e66f31c5Sopenharmony_ci 15e66f31c5Sopenharmony_cijobs: 16e66f31c5Sopenharmony_ci sanitizers-linux: 17e66f31c5Sopenharmony_ci runs-on: ubuntu-22.04 18e66f31c5Sopenharmony_ci steps: 19e66f31c5Sopenharmony_ci - uses: actions/checkout@v2 20e66f31c5Sopenharmony_ci - name: Setup 21e66f31c5Sopenharmony_ci run: | 22e66f31c5Sopenharmony_ci sudo apt-get install ninja-build 23e66f31c5Sopenharmony_ci - name: Envinfo 24e66f31c5Sopenharmony_ci run: npx envinfo 25e66f31c5Sopenharmony_ci 26e66f31c5Sopenharmony_ci - name: ASAN Build 27e66f31c5Sopenharmony_ci run: | 28e66f31c5Sopenharmony_ci mkdir build-asan 29e66f31c5Sopenharmony_ci (cd build-asan && cmake .. -G Ninja -DBUILD_TESTING=ON -DASAN=ON -DCMAKE_BUILD_TYPE=Debug) 30e66f31c5Sopenharmony_ci cmake --build build-asan 31e66f31c5Sopenharmony_ci - name: ASAN Test 32e66f31c5Sopenharmony_ci run: | 33e66f31c5Sopenharmony_ci ./build-asan/uv_run_tests_a 34e66f31c5Sopenharmony_ci 35e66f31c5Sopenharmony_ci - name: MSAN Build 36e66f31c5Sopenharmony_ci run: | 37e66f31c5Sopenharmony_ci mkdir build-msan 38e66f31c5Sopenharmony_ci (cd build-msan && cmake .. -G Ninja -DBUILD_TESTING=ON -DMSAN=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang) 39e66f31c5Sopenharmony_ci cmake --build build-msan 40e66f31c5Sopenharmony_ci - name: MSAN Test 41e66f31c5Sopenharmony_ci run: | 42e66f31c5Sopenharmony_ci ./build-msan/uv_run_tests_a 43e66f31c5Sopenharmony_ci 44e66f31c5Sopenharmony_ci - name: TSAN Build 45e66f31c5Sopenharmony_ci run: | 46e66f31c5Sopenharmony_ci mkdir build-tsan 47e66f31c5Sopenharmony_ci (cd build-tsan && cmake .. -G Ninja -DBUILD_TESTING=ON -DTSAN=ON -DCMAKE_BUILD_TYPE=Release) 48e66f31c5Sopenharmony_ci cmake --build build-tsan 49e66f31c5Sopenharmony_ci - name: TSAN Test 50e66f31c5Sopenharmony_ci # Note: path must be absolute because some tests chdir. 51e66f31c5Sopenharmony_ci # TSan exits with an error when it can't find the file. 52e66f31c5Sopenharmony_ci run: | 53e66f31c5Sopenharmony_ci env TSAN_OPTIONS="suppressions=$PWD/tsansupp.txt" ./build-tsan/uv_run_tests_a 54e66f31c5Sopenharmony_ci 55e66f31c5Sopenharmony_ci - name: UBSAN Build 56e66f31c5Sopenharmony_ci run: | 57e66f31c5Sopenharmony_ci mkdir build-ubsan 58e66f31c5Sopenharmony_ci (cd build-ubsan && cmake .. -G Ninja -DBUILD_TESTING=ON -DUBSAN=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang) 59e66f31c5Sopenharmony_ci cmake --build build-ubsan 60e66f31c5Sopenharmony_ci - name: UBSAN Test 61e66f31c5Sopenharmony_ci run: | 62e66f31c5Sopenharmony_ci ./build-ubsan/uv_run_tests_a 63e66f31c5Sopenharmony_ci 64e66f31c5Sopenharmony_ci sanitizers-macos: 65e66f31c5Sopenharmony_ci runs-on: macos-11 66e66f31c5Sopenharmony_ci steps: 67e66f31c5Sopenharmony_ci - uses: actions/checkout@v2 68e66f31c5Sopenharmony_ci 69e66f31c5Sopenharmony_ci - name: Envinfo 70e66f31c5Sopenharmony_ci run: npx envinfo 71e66f31c5Sopenharmony_ci 72e66f31c5Sopenharmony_ci - name: ASAN Build 73e66f31c5Sopenharmony_ci run: | 74e66f31c5Sopenharmony_ci mkdir build-asan 75e66f31c5Sopenharmony_ci (cd build-asan && cmake .. -DBUILD_TESTING=ON -DASAN=ON -DCMAKE_BUILD_TYPE=Debug) 76e66f31c5Sopenharmony_ci cmake --build build-asan 77e66f31c5Sopenharmony_ci - name: ASAN Test 78e66f31c5Sopenharmony_ci run: | 79e66f31c5Sopenharmony_ci ./build-asan/uv_run_tests_a 80e66f31c5Sopenharmony_ci 81e66f31c5Sopenharmony_ci - name: TSAN Build 82e66f31c5Sopenharmony_ci run: | 83e66f31c5Sopenharmony_ci mkdir build-tsan 84e66f31c5Sopenharmony_ci (cd build-tsan && cmake .. -DBUILD_TESTING=ON -DTSAN=ON -DCMAKE_BUILD_TYPE=Release) 85e66f31c5Sopenharmony_ci cmake --build build-tsan 86e66f31c5Sopenharmony_ci - name: TSAN Test 87e66f31c5Sopenharmony_ci run: | 88e66f31c5Sopenharmony_ci ./build-tsan/uv_run_tests_a 89e66f31c5Sopenharmony_ci 90e66f31c5Sopenharmony_ci - name: UBSAN Build 91e66f31c5Sopenharmony_ci run: | 92e66f31c5Sopenharmony_ci mkdir build-ubsan 93e66f31c5Sopenharmony_ci (cd build-ubsan && cmake .. -DBUILD_TESTING=ON -DUBSAN=ON -DCMAKE_BUILD_TYPE=Debug) 94e66f31c5Sopenharmony_ci cmake --build build-ubsan 95e66f31c5Sopenharmony_ci - name: UBSAN Test 96e66f31c5Sopenharmony_ci run: | 97e66f31c5Sopenharmony_ci ./build-ubsan/uv_run_tests_a 98e66f31c5Sopenharmony_ci 99e66f31c5Sopenharmony_ci sanitizers-windows: 100e66f31c5Sopenharmony_ci runs-on: windows-2022 101e66f31c5Sopenharmony_ci steps: 102e66f31c5Sopenharmony_ci - uses: actions/checkout@v2 103e66f31c5Sopenharmony_ci - name: Setup 104e66f31c5Sopenharmony_ci run: | 105e66f31c5Sopenharmony_ci choco install ninja 106e66f31c5Sopenharmony_ci 107e66f31c5Sopenharmony_ci # Note: clang shipped with VS2022 has an issue where the UBSAN runtime doesn't link. 108e66f31c5Sopenharmony_ci - name: Install LLVM and Clang 109e66f31c5Sopenharmony_ci uses: KyleMayes/install-llvm-action@v1 110e66f31c5Sopenharmony_ci with: 111e66f31c5Sopenharmony_ci version: "17" 112e66f31c5Sopenharmony_ci 113e66f31c5Sopenharmony_ci - name: Envinfo 114e66f31c5Sopenharmony_ci run: npx envinfo 115e66f31c5Sopenharmony_ci 116e66f31c5Sopenharmony_ci - name: UBSAN Build 117e66f31c5Sopenharmony_ci run: | 118e66f31c5Sopenharmony_ci mkdir build-ubsan 119e66f31c5Sopenharmony_ci cmake -B build-ubsan -G Ninja -DBUILD_TESTING=ON -DUBSAN=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang 120e66f31c5Sopenharmony_ci cmake --build build-ubsan 121e66f31c5Sopenharmony_ci - name: UBSAN Test 122e66f31c5Sopenharmony_ci run: | 123e66f31c5Sopenharmony_ci ./build-ubsan/uv_run_tests_a 124