From c1e00bf97a6a43daa3dbd96c57838c26263db58f Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Mon, 27 Oct 2025 17:11:27 +0100 Subject: [PATCH] Add valgrind and ubsan suppressions --- configure.ac | 8 +++---- maketest.sh | 2 ++ valgrind.supp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 5470ee29..69b7ece5 100644 --- a/configure.ac +++ b/configure.ac @@ -259,7 +259,7 @@ AC_ARG_ENABLE([coverage], AC_ARG_ENABLE([valgrind], [AS_HELP_STRING([--enable-valgrind],[enable the use of valgrind in testing])], [ - TESTENV="$VALGRIND --leak-check=full --error-exitcode=1" + TESTENV="$VALGRIND --leak-check=full --suppressions=valgrind.supp --error-exitcode=1" FAILENV="$VALGRIND --error-exitcode=1" CFLAGS="$CFLAGS -DCHECKER" MEMORY_CHECKER=1 @@ -279,7 +279,7 @@ AC_ARG_ENABLE([sgcheck], AC_ARG_ENABLE([helgrind], [AS_HELP_STRING([--enable-helgrind],[enable the use of helgrind in testing])], [ - TESTENV="$VALGRIND --tool=helgrind --fair-sched=try --error-exitcode=1" + TESTENV="$VALGRIND --tool=helgrind --suppressions=valgrind.supp --fair-sched=try --error-exitcode=1" FAILENV="$TESTENV" CFLAGS="$CFLAGS -DCHECKER" THREAD_CHECKER=1 @@ -289,7 +289,7 @@ AC_ARG_ENABLE([helgrind], AC_ARG_ENABLE([drd], [AS_HELP_STRING([--enable-drd],[enable the use of drd in testing])], [ - TESTENV="$VALGRIND --tool=drd --fair-sched=try --error-exitcode=1" + TESTENV="$VALGRIND --tool=drd --suppressions=valgrind.supp --fair-sched=try --error-exitcode=1" FAILENV="$TESTENV" CFLAGS="$CFLAGS -DCHECKER" THREAD_CHECKER=1 @@ -315,7 +315,7 @@ AC_ARG_ENABLE([msan], AC_ARG_ENABLE([ubsan], [AS_HELP_STRING([--enable-ubsan],[enable the use of UndefinedBehaviourSanitizer in testing])], [ - CFLAGS="$CFLAGS -DCHECKER -fsanitize=undefined" + CFLAGS="$CFLAGS -DCHECKER -fsanitize=undefined -fno-sanitize=function" MEMORY_CHECKER=1 ], []) diff --git a/maketest.sh b/maketest.sh index fe59e80a..7c4d7bab 100755 --- a/maketest.sh +++ b/maketest.sh @@ -13,6 +13,8 @@ make distclean cd $DEST +cp $SOURCE/valgrind.supp $DEST + # Coverage if ! $SOURCE/configure --enable-coverage --enable-sde; then exit 1 diff --git a/valgrind.supp b/valgrind.supp index 7c074cd5..d318d3a7 100644 --- a/valgrind.supp +++ b/valgrind.supp @@ -5,3 +5,64 @@ fun:printf } +############################################################################### +# Ignore races in pthread functions implemented in /lib64/libc-2.42.so +# Keeps helgrind and drd quiet for internal GLIBC synchronization, +# but still reports races in user code. +############################################################################### + +{ + glibc_pthread_mutex_lock + Helgrind:Race + fun:pthread_mutex_lock* +} + +{ + glibc_pthread_mutex_unlock + Helgrind:Race + fun:pthread_mutex_unlock* +} + +{ + glibc_pthread_cond_wait + Helgrind:Race + ... + fun:pthread_cond_wait* +} + +{ + glibc_pthread_cond_signal + Helgrind:Race + fun:pthread_cond_signal* +} + +{ + glibc_pthread_cond_broadcast + Helgrind:Race + fun:pthread_cond_broadcast* +} + +{ + glibc_pthread_join + Helgrind:Race + ... + fun:pthread_join* +} + +{ + glibc_thread_start + Helgrind:Race + fun:start_thread +} + +{ + glibc_set_vma_name + Helgrind:Race + fun:__set_vma_name +} + +{ + glibc_name_stack_maps + drd:ConflictingAccess + fun:name_stack_maps +}