public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-905] libstdc++: Do not use pthread_mutex_clocklock with ThreadSanitizer
@ 2023-05-16  9:05 Jonathan Wakely
  0 siblings, 0 replies; only message in thread
From: Jonathan Wakely @ 2023-05-16  9:05 UTC (permalink / raw)
  To: gcc-cvs, libstdc++-cvs

https://gcc.gnu.org/g:3b7cb33033fbe6af6c1c4ef014f7353479d1dd6b

commit r14-905-g3b7cb33033fbe6af6c1c4ef014f7353479d1dd6b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 9 09:30:48 2023 +0100

    libstdc++: Do not use pthread_mutex_clocklock with ThreadSanitizer
    
    As noted in https://github.com/llvm/llvm-project/issues/62623 there are
    no tsan interceptors for some of the new POSIX-1:202x APIs added by
    https://austingroupbugs.net/view.php?id=1216 so tsan gives false
    positive warnings for try_lock_for on timed mutexes.
    
    Disable the uses of the new pthread_mutex_clocklock API when tsan is
    active. This changes the semantics of the try_lock_for functions,
    because it can change which clock is used for the wait. This means those
    functions might be affected by system clock adjustments when tsan is
    used, when they would not be affected otherwise.
    
    Reviewed-by: Thomas Rodgers <trodgers@redhat.com>
    Reviewed-by: Mike Crowe <mac@mcrowe.com>
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK): Define
            _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK in terms of _GLIBCXX_TSAN.
            * configure: Regenerate.

Diff:
---
 libstdc++-v3/acinclude.m4 | 2 +-
 libstdc++-v3/configure    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 42a8e7a775e..0ce3b8b5b31 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -4314,7 +4314,7 @@ AC_DEFUN([GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK], [
       [glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK=no])
   ])
   if test $glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK = yes; then
-    AC_DEFINE(_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK, 1, [Define if pthread_mutex_clocklock is available in <pthread.h>.])
+    AC_DEFINE(_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK, (_GLIBCXX_TSAN==0), [Define if pthread_mutex_clocklock is available in <pthread.h>.])
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index d4286b67a73..c1faebd54f2 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -21364,7 +21364,7 @@ fi
 $as_echo "$glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK" >&6; }
   if test $glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK = yes; then
 
-$as_echo "#define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK 1" >>confdefs.h
+$as_echo "#define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK (_GLIBCXX_TSAN==0)" >>confdefs.h
 
   fi

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-05-16  9:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-16  9:05 [gcc r14-905] libstdc++: Do not use pthread_mutex_clocklock with ThreadSanitizer Jonathan Wakely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).