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