ci/lavapipe: Add a fractional run with ASan
authorEmma Anholt <emma@anholt.net>
Mon, 12 Jul 2021 15:07:07 +0000 (16:07 +0100)
committerMarge Bot <eric+marge@anholt.net>
Fri, 20 Aug 2021 18:22:30 +0000 (18:22 +0000)
This catches use-after-frees and buffer overflows, but not leaks (which we
disable the checking for since the library gets dlclose()d and we end up
with useless backtraces).

Reviewed-by: Adam Jackson <ajax@redhat.com>
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8889>

src/gallium/frontends/lavapipe/ci/deqp-lvp-asan-fails.txt [new file with mode: 0644]
src/gallium/frontends/lavapipe/ci/deqp-lvp-asan-skips.txt [new file with mode: 0644]
src/gallium/frontends/lavapipe/ci/gitlab-ci.yml

diff --git a/src/gallium/frontends/lavapipe/ci/deqp-lvp-asan-fails.txt b/src/gallium/frontends/lavapipe/ci/deqp-lvp-asan-fails.txt
new file mode 100644 (file)
index 0000000..f97426b
--- /dev/null
@@ -0,0 +1,4 @@
+dEQP-VK.glsl.builtin.precision.pow.highp.vec2,Fail
+dEQP-VK.glsl.texture_functions.query.texturequerylod.sampler2d_fixed_fragment,Fail
+dEQP-VK.draw.multi_draw.mosaic.indexed_packed.max_draws.standard_stride.10_instances.offset_6,Crash
+dEQP-VK.draw.multi_draw.overlapping.indexed_packed.one_draw.standard_stride.no_instances.offset_6,Crash
diff --git a/src/gallium/frontends/lavapipe/ci/deqp-lvp-asan-skips.txt b/src/gallium/frontends/lavapipe/ci/deqp-lvp-asan-skips.txt
new file mode 100644 (file)
index 0000000..86fec29
--- /dev/null
@@ -0,0 +1,5 @@
+# Lots of timeouts
+dEQP-VK.texture.filtering.*.combinations.*
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.*
+dEQP-VK.ssbo.layout.*instance_array
+dEQP-VK.tessellation.invariance.*
index 77920b2cbe235e966c6fa17d44f3562b1ce96c6f..4dad2d6c4b3fd2c05ae0d244d8d74a76ff8b96c7 100644 (file)
@@ -1,4 +1,4 @@
-lavapipe-vk:
+.lavapipe-test:
   stage: software-renderer
   extends:
     - .test-vk
@@ -7,19 +7,33 @@ lavapipe-vk:
   variables:
     GPU_VERSION: lvp
     VK_DRIVER: lvp
-    DEQP_FRACTION: 10
     DEQP_EXPECTED_RENDERER: llvmpipe
 
-lavapipe-nir-stress:
+lavapipe-vk:
   stage: software-renderer
   extends:
-    - .test-vk
-    - .lavapipe-rules
-    - .deqp-test-vk
+    - .lavapipe-test
+  variables:
+    DEQP_FRACTION: 10
+
+lavapipe-nir-stress:
+  extends:
+    - .lavapipe-test
   variables:
-    GPU_VERSION: lvp
-    VK_DRIVER: lvp
     DEQP_FRACTION: 100
-    DEQP_EXPECTED_RENDERER: llvmpipe
     NIR_TEST_CLONE: "true"
     NIR_TEST_SERIALIZE: "true"
+
+lavapipe-vk-asan:
+  extends:
+    - .lavapipe-test
+  variables:
+    GPU_VERSION: lvp-asan
+    DEQP_FRACTION: 50
+    TEST_LD_PRELOAD: libasan.so.6
+    # Disable the leak checks, since the library gets dlclose()d and thus get
+    # totally useless leak reports.  We can still catch buffer overflows.
+    ASAN_OPTIONS: "detect_leaks=0"
+  needs:
+    - debian/x86_test-vk
+    - debian-testing-asan