1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-13 17:47:49 +08:00

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

This commit is contained in:
Ben Boeckel
2025-09-26 14:47:58 -04:00
parent f1e8762a8b
commit e981fc4f4d
8 changed files with 154 additions and 0 deletions

View File

@@ -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
.gitlab/ci/.gitattributes vendored Normal file
View File

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

View File

@@ -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")

View File

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

View File

@@ -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})")

View File

@@ -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
...
}

View File

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

View File

@@ -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