diff options
author | Andreas Schwab <schwab@suse.de> | 2018-11-08 14:28:22 +0100 |
---|---|---|
committer | Andreas Schwab <schwab@suse.de> | 2018-12-13 12:22:30 +0100 |
commit | f21e8f8ca466320fed38bdb71526c574dae98026 (patch) | |
tree | b4d30072a2ae6abdf42ed0e980d49e877894ec66 /ChangeLog | |
parent | 3d265911c2aac65d978f679101594f9071024874 (diff) | |
download | glibc-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-- | ChangeLog | 5 |
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> |