-
Bug
-
Resolution: Fixed
-
P3
-
18
-
b08
If there are concurrent calls to NonblockingQueue::try_pop, it is possible for contention between them to result in some of them incorrectly indicating the queue is empty, when it actually is not.
If a try_pop finds a head object whose next value is null, the current code assumes that means it lost the race with the 3rd clause (which claimed the last entry), so the list is now effectively empty. But it could have instead lost the race with the second clause, and we don't know whether the queue now has any entries.
If a try_pop finds a head object whose next value is null, the current code assumes that means it lost the race with the 3rd clause (which claimed the last entry), so the list is now effectively empty. But it could have instead lost the race with the second clause, and we don't know whether the queue now has any entries.
- relates to
-
JDK-8268290 Improve LockFreeQueue<> utility
-
- Resolved
-
-
JDK-8273383 vmTestbase/vm/gc/containers/Combination05/TestDescription.java crashes verifying length of DCQS
-
- Closed
-