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