]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] Merge TSAN test matrices in CI (#123278) (#129674)
author🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <webknjaz@redhat.com>
Thu, 6 Feb 2025 16:46:00 +0000 (17:46 +0100)
committerGitHub <noreply@github.com>
Thu, 6 Feb 2025 16:46:00 +0000 (16:46 +0000)
.github/workflows/build.yml
.github/workflows/reusable-tsan.yml
Tools/tsan/suppressions.txt [moved from Tools/tsan/supressions.txt with 100% similarity]

index 413600bdd900a0bb04b97204cc55aef60b0f0d4f..bfe5c4c63f94327d7f673a4b65a4e7dd44fead5c 100644 (file)
@@ -529,13 +529,19 @@ jobs:
       run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"
 
   build_tsan:
-    name: 'Thread sanitizer'
+    name: >-
+      Thread sanitizer
+      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
     needs: check_source
     if: needs.check_source.outputs.run_tests == 'true'
+    strategy:
+      matrix:
+        free-threading:
+        - false
     uses: ./.github/workflows/reusable-tsan.yml
     with:
       config_hash: ${{ needs.check_source.outputs.config_hash }}
-      options: ./configure --config-cache --with-thread-sanitizer --with-pydebug
+      free-threading: ${{ matrix.free-threading }}
 
   all-required-green:  # This job does nothing and is only used for the branch protection
     name: All required checks pass
index 3aed17213218f0a9132a99b9544c969f7c4ce8a4..874d842201a4f8b5b0e9d2c49d8ae1683f542c68 100644 (file)
@@ -6,9 +6,11 @@ on:
       config_hash:
         required: true
         type: string
-      options:
-        required: true
-        type: string
+      free-threading:
+        description: Whether to use free-threaded mode
+        required: false
+        type: boolean
+        default: false
 
 env:
   FORCE_COLOR: 1
@@ -18,8 +20,6 @@ jobs:
     name: 'Thread sanitizer'
     runs-on: ubuntu-24.04
     timeout-minutes: 60
-    env:
-      OPTIONS: ${{ inputs.options }}
     steps:
     - uses: actions/checkout@v4
       with:
@@ -39,9 +39,13 @@ jobs:
         sudo sysctl -w vm.mmap_rnd_bits=28
     - name: TSAN Option Setup
       run: |
-        echo "TSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/Tools/tsan/supressions.txt" >> $GITHUB_ENV
-        echo "CC=clang" >> $GITHUB_ENV
-        echo "CXX=clang++" >> $GITHUB_ENV
+        echo "TSAN_OPTIONS=log_path=${GITHUB_WORKSPACE}/tsan_log suppressions=${GITHUB_WORKSPACE}/Tools/tsan/suppressions${{
+            fromJSON(inputs.free-threading)
+            && '_free_threading'
+            || ''
+          }}.txt" >> "$GITHUB_ENV"
+        echo "CC=clang" >> "$GITHUB_ENV"
+        echo "CXX=clang++" >> "$GITHUB_ENV"
     - name: Add ccache to PATH
       run: |
         echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
@@ -51,7 +55,12 @@ jobs:
         save: ${{ github.event_name == 'push' }}
         max-size: "200M"
     - name: Configure CPython
-      run: "${OPTIONS}"
+      run: >-
+        ./configure
+        --config-cache
+        --with-thread-sanitizer
+        --with-pydebug
+        ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
     - name: Build CPython
       run: make -j4
     - name: Display build info