]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Move asan plus ubsan settings to strategy, in preparation for also doing tsan
authorOtto <otto.moerbeek@open-xchange.com>
Wed, 10 Nov 2021 08:38:28 +0000 (09:38 +0100)
committerOtto <otto.moerbeek@open-xchange.com>
Wed, 10 Nov 2021 08:40:33 +0000 (09:40 +0100)
.github/workflows/build-and-test-all.yml
tasks.py

index d5e88305a4cd3ef3467bd8da5ba158db5a02ca17..a374dbe764675c796b51823ec3df754fbca071cb 100644 (file)
@@ -50,9 +50,13 @@ jobs:
   build-recursor:
     name: build recursor
     runs-on: ubuntu-20.04
+    strategy:
+      matrix:
+        sanitizers: [ubsan+asan]
     env:
       UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ github.workspace }}/build-scripts/UBSan.supp"
       ASAN_OPTIONS: detect_leaks=0
+      SANITIZERS: ${{ matrix.sanitizers }}
     defaults:
       run:
         working-directory: ./pdns/recursordist/
@@ -70,8 +74,8 @@ jobs:
         uses: actions/cache@v2
         with:
           path: ~/.ccache
-          key: recursor-ccache-${{ steps.get-stamp.outputs.stamp }}
-          restore-keys: recursor-ccache-
+          key: recursor-${{ matrix.sanitizers }}-ccache-${{ steps.get-stamp.outputs.stamp }}
+          restore-keys: recursor-${{ matrix.sanitizers }}-ccache-
       - run: ../../build-scripts/gh-actions-setup-inv  # this runs apt update+upgrade
       - run: inv apt-fresh
       - run: inv install-clang
@@ -85,7 +89,7 @@ jobs:
       - name: Store the binaries
         uses: actions/upload-artifact@v2 # this takes 30 seconds, maybe we want to tar
         with:
-          name: pdns-recursor
+          name: pdns-recursor-${{ matrix.sanitizers }}
           path: /opt/pdns-recursor
           retention-days: 1
 
@@ -271,9 +275,13 @@ jobs:
   test-recursor-api:
     needs: build-recursor
     runs-on: ubuntu-20.04
+    strategy:
+      matrix:
+        sanitizers: [ubsan+asan]
     env:
       UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ github.workspace }}/build-scripts/UBSan.supp"
       ASAN_OPTIONS: detect_leaks=0
+      TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ github.workspace }}/pdns/recursordist/recursor-tsan.supp"
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -282,7 +290,7 @@ jobs:
       - name: Fetch the binaries
         uses: actions/download-artifact@v2
         with:
-          name: pdns-recursor
+          name: pdns-recursor-${{ matrix.sanitizers }}
           path: /opt/pdns-recursor
       - run: build-scripts/gh-actions-setup-inv  # this runs apt update+upgrade
       - run: inv add-auth-repo  # FIXME: do we need this for rec API testing?
@@ -293,9 +301,13 @@ jobs:
   test-recursor-regression:
     needs: build-recursor
     runs-on: ubuntu-20.04
+    strategy:
+      matrix:
+        sanitizers: [ubsan+asan]
     env:
       UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1:suppressions=/home/runner/work/pdns/pdns/build-scripts/UBSan.supp'
       ASAN_OPTIONS: detect_leaks=0
+      TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ github.workspace }}/pdns/recursordist/recursor-tsan.supp"
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -304,7 +316,7 @@ jobs:
       - name: Fetch the binaries
         uses: actions/download-artifact@v2
         with:
-          name: pdns-recursor
+          name: pdns-recursor-${{ matrix.sanitizers }}
           path: /opt/pdns-recursor
       - run: build-scripts/gh-actions-setup-inv  # this runs apt update+upgrade
       - run: inv add-auth-repo
@@ -318,12 +330,14 @@ jobs:
     runs-on: ubuntu-20.04
     strategy:
       matrix:
+        sanitizers: [ubsan+asan]
         threads: [1, 2, 3, 4, 8, 16]
         mthreads: [2048, 4096]
         shards: [1, 2, 1028]
     env:
       UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1:suppressions=/home/runner/work/pdns/pdns/build-scripts/UBSan.supp'
       ASAN_OPTIONS: detect_leaks=0
+      TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ github.workspace }}/pdns/recursordist/recursor-tsan.supp"
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -332,7 +346,7 @@ jobs:
       - name: Fetch the binaries
         uses: actions/download-artifact@v2
         with:
-          name: pdns-recursor
+          name: pdns-recursor-${{ matrix.sanitizers }}
           path: /opt/pdns-recursor
       - run: build-scripts/gh-actions-setup-inv  # this runs apt update+upgrade
       - run: inv install-clang-runtime
index d01735e213db04f8ff3e38b119ebf96c885431d7..74f14b5dcb658cf2dda4c7f28c19278448d60f90 100644 (file)
--- a/tasks.py
+++ b/tasks.py
@@ -256,6 +256,7 @@ def ci_auth_configure(c):
         raise UnexpectedExit(res)
 @task
 def ci_rec_configure(c):
+    sanitizers = ' '.join('--enable-'+x for x in os.getenv('SANITIZERS').split('+'))
     res = c.run('''            CFLAGS="-O1 -Werror=vla -Werror=shadow -Wformat=2 -Werror=format-security -Werror=string-plus-int" \
             CXXFLAGS="-O1 -Werror=vla -Werror=shadow -Wformat=2 -Werror=format-security -Werror=string-plus-int -Wp,-D_GLIBCXX_ASSERTIONS" \
             ./configure \
@@ -270,9 +271,7 @@ def ci_rec_configure(c):
               --with-lua=luajit \
               --with-libcap \
               --with-net-snmp \
-              --enable-dns-over-tls \
-              --enable-asan \
-              --enable-ubsan''', warn=True)
+              --enable-dns-over-tls ''' + sanitizers, warn=True)
     if res.exited != 0:
         c.run('cat config.log')
         raise UnexpectedExit(res)