summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-02-09 18:02:47 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-02-09 18:02:47 +0100
commit66d48da0bccdd929ac07dfe4a8441051d863a477 (patch)
treefd31957e1aa109f067d0b3a3c770ce94290b9ef8
parent7c3cea34aafec501f7516b75d6dd2942deef7fed (diff)
fix pthread_spin_lock behavior for shared memory
debian/patches/hurd-i386/git-spin_lock.diff: New patch
-rw-r--r--debian/changelog2
-rw-r--r--debian/patches/hurd-i386/git-spin_lock.diff22
-rw-r--r--debian/patches/series1
3 files changed, 25 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 787c5a83..a2bd1b80 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ glibc (2.30-0experimental3) UNRELEASED; urgency=medium
* testsuite-xfail-debian.mk: Update non-regressions.
* debian/patches/hurd-i386/git-fork-pthread_exit.diff: New patch to fix
pthread_exit after fork.
+ * debian/patches/hurd-i386/git-spin_lock.diff: New patch to fix
+ pthread_spin_lock behavior for shared memory.
[ Aurelien Jarno ]
* debian/patches/any/local-revert-24323.diff: drop, obsolete.
diff --git a/debian/patches/hurd-i386/git-spin_lock.diff b/debian/patches/hurd-i386/git-spin_lock.diff
new file mode 100644
index 00000000..5415713f
--- /dev/null
+++ b/debian/patches/hurd-i386/git-spin_lock.diff
@@ -0,0 +1,22 @@
+commit 900778283ac3cfbd274abc55840b5cdae9b7745f
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sun Feb 9 16:54:58 2020 +0000
+
+ htl: make pthread_spin_lock really spin
+
+ __spin_lock would actually use gsync_wait to block, which is not what
+ pthread_spin_lock is about.
+
+diff --git a/sysdeps/mach/htl/bits/spin-lock-inline.h b/sysdeps/mach/htl/bits/spin-lock-inline.h
+index 771292f08f..556bdd4c28 100644
+--- a/sysdeps/mach/htl/bits/spin-lock-inline.h
++++ b/sysdeps/mach/htl/bits/spin-lock-inline.h
+@@ -67,7 +67,7 @@ __PT_SPIN_INLINE int __pthread_spin_lock (__pthread_spinlock_t *__lock);
+ __PT_SPIN_INLINE int
+ __pthread_spin_lock (__pthread_spinlock_t *__lock)
+ {
+- __spin_lock ((__spin_lock_t *) __lock);
++ __spin_lock_solid ((__spin_lock_t *) __lock);
+ return 0;
+ }
+
diff --git a/debian/patches/series b/debian/patches/series
index 35ca8fb6..767f02db 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -80,6 +80,7 @@ hurd-i386/git-hurd_sigstate-PLT.diff
hurd-i386/git-rlock.diff
hurd-i386/git-errno_location.diff
hurd-i386/git-fork-pthread_exit.diff
+hurd-i386/git-spin_lock.diff
i386/local-biarch.diff
i386/unsubmitted-quiet-ldconfig.diff