libuv-svace-build

Форк
0
128 строк · 3.5 Кб
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@v2
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-11
71
    steps:
72
      - uses: actions/checkout@v2
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@v2
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@v1
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
129

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.