about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2018-11-08 14:28:22 +0100
committerAndreas Schwab <schwab@suse.de>2018-12-13 12:22:30 +0100
commitf21e8f8ca466320fed38bdb71526c574dae98026 (patch)
treeb4d30072a2ae6abdf42ed0e980d49e877894ec66 /ChangeLog
parent3d265911c2aac65d978f679101594f9071024874 (diff)
downloadglibc-f21e8f8ca466320fed38bdb71526c574dae98026.tar.gz
glibc-f21e8f8ca466320fed38bdb71526c574dae98026.tar.xz
glibc-f21e8f8ca466320fed38bdb71526c574dae98026.zip
Fix rwlock stall with PREFER_WRITER_NONRECURSIVE_NP (bug 23861)
In the read lock function (__pthread_rwlock_rdlock_full) there was a
code path which would fail to reload __readers while waiting for
PTHREAD_RWLOCK_RWAITING to change. This failure to reload __readers
into a local value meant that various conditionals used the old value
of __readers and with only two threads left it could result in an
indefinite stall of one of the readers (waiting for PTHREAD_RWLOCK_RWAITING
to go to zero, but it never would).
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog5
1 files changed, 5 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 787dab87a8..cd35115ede 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
 2018-12-13  Andreas Schwab  <schwab@suse.de>
 
+	[BZ #23861]
 	* nptl/pthread_rwlock_common.c: Reindent.  Fix typos.
+	(__pthread_rwlock_rdlock_full): Update expected value for
+	__readers while waiting on PTHREAD_RWLOCK_RWAITING.
+	* nptl/tst-rwlock-pwn.c: New file.
+	* nptl/Makefile (tests): Add tst-rwlock-pwn.
 
 2018-12-12  Joseph Myers  <joseph@codesourcery.com>