]> git.ipfire.org Git - thirdparty/glibc.git/commit - ChangeLog
Fix rwlock stall with PREFER_WRITER_NONRECURSIVE_NP (bug 23861)
authorAndreas Schwab <schwab@suse.de>
Thu, 8 Nov 2018 13:28:22 +0000 (14:28 +0100)
committerAndreas Schwab <schwab@suse.de>
Thu, 13 Dec 2018 11:22:30 +0000 (12:22 +0100)
commitf21e8f8ca466320fed38bdb71526c574dae98026
treeb4d30072a2ae6abdf42ed0e980d49e877894ec66
parent3d265911c2aac65d978f679101594f9071024874
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).
ChangeLog
nptl/Makefile
nptl/pthread_rwlock_common.c
nptl/tst-rwlock-pwn.c [new file with mode: 0644]