Kaynağa Gözat

gitlab-ci: add a job to test with Valgrind on Linux with Ninja

Ben Boeckel 3 hafta önce
ebeveyn
işleme
e981fc4f4d

+ 13 - 0
.gitlab-ci.yml

@@ -1030,6 +1030,19 @@ t:fedora42-asan:
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
+t:fedora42-ninja-valgrind:
+    extends:
+        - .fedora42_ninja_valgrind
+        - .cmake_test_linux_release
+        # Use a fast CPU so that timeouts are less of a concern.
+        - .linux_x86_64_tags_fast_x11
+        - .cmake_valgrind_artifacts
+        - .run_dependent
+        - .needs_centos7_x86_64
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+    timeout: 2 hours
+
 # macOS builds
 
 b:macos-x86_64-ninja:

+ 2 - 0
.gitlab/ci/.gitattributes

@@ -0,0 +1,2 @@
+# Do not apply a size limit to suppression files.
+*.valgrind.supp  -hooks-max-size

+ 6 - 0
.gitlab/ci/configure_fedora42_ninja_valgrind.cmake

@@ -0,0 +1,6 @@
+set(CMake_TEST_Qt5 ON CACHE BOOL "")
+set(CMake_TEST_Qt6 ON CACHE BOOL "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora42_valgrind.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora42_ninja.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 2 - 0
.gitlab/ci/configure_fedora42_valgrind.cmake

@@ -0,0 +1,2 @@
+# Disable bootstrap testing for Valgrind testing.
+set(CMAKE_SKIP_BOOTSTRAP_TEST OFF CACHE BOOL "")

+ 14 - 0
.gitlab/ci/ctest_exclusions.cmake

@@ -27,6 +27,20 @@ if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "_jom")
     )
 endif()
 
+if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "_valgrind")
+  list(APPEND test_exclusions
+    # Tests that timeout under valgrind.
+    "^RunCMake.NinjaMultiConfig$"
+    "^RunCMake.Autogen_Qt6_1$"
+    "^RunCMake.GoogleTest$"
+    "^RunCMake.CXXModules$"
+    "^RunCMake.CommandLine$"
+
+    # Too spurious under Valgrind.
+    "^RunCMake.testUVProcessChain$"
+    )
+endif()
+
 string(REPLACE ";" "|" test_exclusions "${test_exclusions}")
 if (test_exclusions)
   set(test_exclusions "(${test_exclusions})")

+ 91 - 0
.gitlab/ci/ctest_memcheck_fedora42.valgrind.supp

@@ -0,0 +1,91 @@
+# Add Valgrind suppressions here.
+{
+   libc_start_main-malloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   ...
+   fun:__libc_start_main@@GLIBC_2.34
+   ...
+}
+{
+   dl_init-malloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   ...
+   fun:_dl_init
+   ...
+}
+{
+   dl_init-calloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:calloc
+   ...
+   fun:_dl_init
+   ...
+}
+{
+   dl_init-realloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:realloc
+   ...
+   fun:_dl_init
+   ...
+}
+{
+   dl_open-malloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   ...
+   fun:_dl_open
+   ...
+}
+{
+   dl_open-calloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:calloc
+   ...
+   fun:_dl_open
+   ...
+}
+{
+   qt5-object-new
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:_Znwm
+   ...
+   fun:_ZN7QObjectC1ER14QObjectPrivatePS_
+   ...
+}
+{
+   qt5-logger-malloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   ...
+   fun:_ZNK14QMessageLogger5debugEv
+   ...
+}
+{
+   strerror_l-malloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   fun:__vasprintf_internal
+   fun:__asprintf_chk
+   fun:strerror_l
+   ...
+}
+{
+   bash
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   ...
+   obj:/usr/bin/bash
+   ...
+}

+ 1 - 0
.gitlab/ci/env_fedora42_ninja_valgrind.sh

@@ -0,0 +1 @@
+source .gitlab/ci/env_fedora42_ninja.sh

+ 25 - 0
.gitlab/os-linux.yml

@@ -337,6 +337,15 @@
         CTEST_MEMORYCHECK_TYPE: AddressSanitizer
         CTEST_MEMORYCHECK_SANITIZER_OPTIONS: ""
 
+.fedora_valgrind_addon:
+    extends: .fedora_memcheck
+
+    variables:
+        CTEST_MEMORYCHECK_TYPE: Valgrind
+        CMAKE_CI_RUN_MEMCHECK: "true"
+        CMAKE_CI_TEST_TIMEOUT: "1500"
+        CMAKE_VALGRIND_CONFIGURATION: fedora42
+
 .fedora42_asan:
     extends:
         - .fedora42
@@ -345,6 +354,15 @@
     variables:
         CMAKE_CONFIGURATION: fedora42_asan
 
+
+.fedora42_ninja_valgrind:
+    extends:
+        - .fedora42
+        - .fedora_valgrind_addon
+
+    variables:
+        CMAKE_CONFIGURATION: fedora42_ninja_valgrind
+
 ### Intel Compiler
 
 .intelcompiler:
@@ -616,6 +634,13 @@
         - linux-x86_64
         - x11
 
+.linux_x86_64_tags_fast_x11:
+    tags:
+        - cmake
+        - docker
+        - linux-x86_64-v4
+        - x11
+
 .linux_x86_64_tags_cuda_arch_30:
     tags:
         - cmake