Plan to commit the attached patch shortly. During testing claude spotted
excutable bits set on the files. The rest is self explanatory.
Regression tested on x86_64.
Regards,
Jerry
---
libgfortran: caf_shmem: remove dead robust mutex setup
The pthread_mutexattr_setrobust calls were guarded by #ifdef
PTHREAD_MUTEX_ROBUST, which glibc defines as an enumerator rather than a
macro, so they were never compiled there. Where it is a macro the
mutexes became robust, but EOWNERDEAD was never handled, so a mutex whose
owner died became unusable. Remove the setup, and the executable bit
the two files had.
Assisted-by: Claude Opus 5.5
libgfortran/ChangeLog:
* caf/shmem/thread_support.c (initialize_shared_mutex)
(initialize_shared_errorcheck_mutex): Do not make the mutex robust.
* caf/shmem/thread_support.h: Remove the executable bit.
---commit f27da74230644cda0b3391955a61781da7164988
Author: Jerry DeLisle <[email protected]>
Date: Sat Oct 17 10:05:42 2026 -0700
libgfortran: caf_shmem: remove dead robust mutex setup
The pthread_mutexattr_setrobust calls were guarded by #ifdef
PTHREAD_MUTEX_ROBUST, which glibc defines as an enumerator rather than a
macro, so they were never compiled there. Where it is a macro the
mutexes became robust, but EOWNERDEAD was never handled, so a mutex whose
owner died became unusable. Remove the setup, and the executable bit
the two files had.
Assisted-by: Claude Opus 5.5
libgfortran/ChangeLog:
* caf/shmem/thread_support.c (initialize_shared_mutex)
(initialize_shared_errorcheck_mutex): Do not make the mutex robust.
* caf/shmem/thread_support.h: Remove the executable bit.
diff --git a/libgfortran/caf/shmem/thread_support.c b/libgfortran/caf/shmem/thread_support.c
old mode 100755
new mode 100644
index dc907c95b0a..f4b9f422dfa
--- a/libgfortran/caf/shmem/thread_support.c
+++ b/libgfortran/caf/shmem/thread_support.c
@@ -50,9 +50,6 @@ initialize_shared_mutex (caf_shmem_mutex *mutex)
pthread_mutexattr_t mattr;
ERRCHECK (pthread_mutexattr_init (&mattr));
ERRCHECK (pthread_mutexattr_setpshared (&mattr, PTHREAD_PROCESS_SHARED));
-#ifdef PTHREAD_MUTEX_ROBUST
- ERRCHECK (pthread_mutexattr_setrobust (&mattr, PTHREAD_MUTEX_ROBUST));
-#endif
ERRCHECK (pthread_mutex_init (mutex, &mattr));
ERRCHECK (pthread_mutexattr_destroy (&mattr));
}
@@ -64,9 +61,6 @@ initialize_shared_errorcheck_mutex (caf_shmem_mutex *mutex)
ERRCHECK (pthread_mutexattr_init (&mattr));
ERRCHECK (pthread_mutexattr_settype (&mattr, PTHREAD_MUTEX_ERRORCHECK));
ERRCHECK (pthread_mutexattr_setpshared (&mattr, PTHREAD_PROCESS_SHARED));
-#ifdef PTHREAD_MUTEX_ROBUST
- ERRCHECK (pthread_mutexattr_setrobust (&mattr, PTHREAD_MUTEX_ROBUST));
-#endif
ERRCHECK (pthread_mutex_init (mutex, &mattr));
ERRCHECK (pthread_mutexattr_destroy (&mattr));
}
diff --git a/libgfortran/caf/shmem/thread_support.h b/libgfortran/caf/shmem/thread_support.h
old mode 100755
new mode 100644