9696 - name : " Pyarrow Nightly"
9797 env_file : actions-311-pyarrownightly.yaml
9898 pattern : " not slow and not network and not single_cpu"
99+ - name : " ASAN / UBSAN"
100+ env_file : actions-311-sanitizers.yaml
101+ pattern : " not slow and not network and not single_cpu and not skip_ubsan"
102+ asan_options : " ASAN_OPTIONS=detect_leaks=0"
103+ preload : LD_PRELOAD=$(gcc -print-file-name=libasan.so)
104+ meson_args : --config-settings=setup-args="-Db_sanitize=address,undefined"
105+ cflags_adds : -fno-sanitize-recover=all
106+ pytest_workers : -1 # disable pytest-xdist as it swallows stderr from ASAN
99107 fail-fast : false
100108 name : ${{ matrix.name || format('ubuntu-latest {0}', matrix.env_file) }}
101109 env :
@@ -105,7 +113,7 @@ jobs:
105113 PANDAS_COPY_ON_WRITE : ${{ matrix.pandas_copy_on_write || '0' }}
106114 PANDAS_CI : ${{ matrix.pandas_ci || '1' }}
107115 TEST_ARGS : ${{ matrix.test_args || '' }}
108- PYTEST_WORKERS : ' auto'
116+ PYTEST_WORKERS : ${{ matrix.pytest_workers || 'auto' }}
109117 PYTEST_TARGET : ${{ matrix.pytest_target || 'pandas' }}
110118 # Clipboard tests
111119 QT_QPA_PLATFORM : offscreen
@@ -174,16 +182,25 @@ jobs:
174182 - name : Build Pandas
175183 id : build
176184 uses : ./.github/actions/build_pandas
185+ with :
186+ meson_args : ${{ matrix.meson_args }}
187+ cflags_adds : ${{ matrix.cflags_adds }}
177188
178189 - name : Test (not single_cpu)
179190 uses : ./.github/actions/run-tests
180191 if : ${{ matrix.name != 'Pypy' }}
192+ with :
193+ preload : ${{ matrix.preload }}
194+ asan_options : ${{ matrix.asan_options }}
181195 env :
182196 # Set pattern to not single_cpu if not already set
183197 PATTERN : ${{ env.PATTERN == '' && 'not single_cpu' || matrix.pattern }}
184198
185199 - name : Test (single_cpu)
186200 uses : ./.github/actions/run-tests
201+ with :
202+ preload : ${{ matrix.preload }}
203+ asan_options : ${{ matrix.asan_options }}
187204 env :
188205 PATTERN : ' single_cpu'
189206 PYTEST_WORKERS : 0
0 commit comments