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