glibc-2.34 (unreleased at this point) comes with the following change: * Previously, glibc installed its various shared objects under versioned file names such as libc-2.33.so. The ABI sonames (e.g., libc.so.6) were provided as symbolic links. Starting with glibc 2.34, the shared objects are installed under their ABI sonames directly, without symbolic links. This increases compatibility with distribution package managers that delete removed files late during the package upgrade or downgrade process. This means that the in memory mapped file name changes from libc-2.xx.so to libc.so.6. This causes some stack traces to show a different file name (which has fairly low impact). And it break suppressions against obj:*/lib*/libc-2.*so* which we use a lot in the default.suppression. In particular (combined with moving all pthread symbols from libpthread.so to libc.so) it breaks the suppressions for helgrind and drd for which we have: { helgrind-glibc2X-004 Helgrind:Race obj:*/lib*/libc-2.*so* } { drd-libc-stdio drd:ConflictingAccess obj:*/lib*/libc-* }
Created attachment 140150 [details] Update helgrind and drd suppression libc and libpthread paths Proposed patch which resolves most helgrind/drd testsuite regressions.
commit a1364805fc74b5690f763033c0c9b43f27613572 Author: Mark Wielaard <mark@klomp.org> Date: Fri Jul 16 15:47:08 2021 -0400 Update helgrind and drd suppression libc and libpthread paths in glibc 2.34 glibc 2.34 moved all pthread functions into the main libc library. And it changed the (in memory) path of the main libc library to libc.so.6 (before it was libc-2.xx.so). This breaks various standard suppressions for helgrind and drd. Fix this by doing a configure check for whether we are using glibc 2.34 by checking whether pthread_create is in libc instead of in libpthread. If we are using glibc then define GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH variables that point to the (regexp) path of the library that contains all libc functions and pthread functions (which will be the same path for glibc 2.34+). Rename glibc-2.34567-NPTL-helgrind.supp to glibc-2.X-helgrind.supp.in and glibc-2.X-drd.supp to glibc-2.X-drd.supp.in and replace the GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH at configure time. The same could be done for the glibc-2.X.supp.in file, but hasn't yet because it looks like most suppressions in that file are obsolete.