From c1a23a64ae06decdffea6caeaba5270854fa0ddd Mon Sep 17 00:00:00 2001 From: Kevin Boulain Date: Wed, 30 Aug 2023 14:52:55 +0200 Subject: [PATCH] test: suppress all interceptors in glib On ppc64el, races are detected by TSan: WARNING: ThreadSanitizer: data race (pid=4520) Read of size 8 at 0x7ffff20016c0 by thread T1: #0 strlen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:386 (libtsan.so.2+0x77c0c) #1 strlen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:378 (libtsan.so.2+0x77c0c) #2 g_strdup ../../../glib/gstrfuncs.c:362 (libglib-2.0.so.0+0xa4ac4) Previous write of size 8 at 0x7ffff20016c0 by thread T2: #0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:647 (libtsan.so.2+0x471f0) #1 g_malloc ../../../glib/gmem.c:130 (libglib-2.0.so.0+0x7bb68) Location is heap block of size 20 at 0x7ffff20016c0 allocated by thread T2: #0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:647 (libtsan.so.2+0x471f0) #1 g_malloc ../../../glib/gmem.c:130 (libglib-2.0.so.0+0x7bb68) This appears to be a false positive in GLib, as explained at https://gitlab.gnome.org/GNOME/glib/-/issues/1672#note_1831968 In short, a call to fstat fails under TSan and GLib's g_sterror will intern the error message, which will be reused by other threads. Since upstream appears to be aware that GLib doesn't play nicely with TSan, suppress everything coming from the library instead of maintaining a fine grained list. Reported at https://buildd.debian.org/status/fetch.php?pkg=notmuch&arch=ppc64el&ver=0.38%7Erc0-1&stamp=1692959868&raw=0 --- test/T810-tsan.suppressions | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/T810-tsan.suppressions b/test/T810-tsan.suppressions index dbd16a94..80dc062f 100644 --- a/test/T810-tsan.suppressions +++ b/test/T810-tsan.suppressions @@ -1,5 +1,3 @@ # It's unclear how TSan-friendly GLib is: # https://gitlab.gnome.org/GNOME/glib/-/issues/1672 -race:g_rw_lock_reader_lock -# https://gitlab.gnome.org/GNOME/glib/-/issues/1952 -race:g_slice_alloc0 +called_from_lib:libglib*.so