diff -r 4cbfa5077d68 -r 623722a6aeb9 src/hotspot/share/utilities/waitBarrier_generic.cpp --- a/src/hotspot/share/utilities/waitBarrier_generic.cpp Mon Nov 25 12:32:40 2019 +0100 +++ b/src/hotspot/share/utilities/waitBarrier_generic.cpp Mon Nov 25 12:33:15 2019 +0100 @@ -48,7 +48,7 @@ assert(w > 0, "Bad counting"); // We need an exact count which never goes below zero, // otherwise the semaphore may be signalled too many times. - if (Atomic::cmpxchg(w - 1, &_waiters, w) == w) { + if (Atomic::cmpxchg(&_waiters, w, w - 1) == w) { _sem_barrier.signal(); return w - 1; }