-
Bug
-
Resolution: Fixed
-
P2
-
18, 19, 20
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8291870 | 20 | Thomas Schatzl | P2 | Resolved | Fixed | b10 |
JDK-8292149 | 19.0.2 | Thomas Schatzl | P2 | Resolved | Fixed | b01 |
JDK-8292125 | 19.0.1 | Thomas Schatzl | P2 | Resolved | Fixed | b06 |
There is a race in remembered set memory management that can lead to crashes:
- Thread A executes G1SegmentedArray::create_new_segment and tries to pop an element from the _free_segment_list. For that, thread A executes LockFreeStack::pop()
- Thread A reads LockFreeStack::top()
- Thread B executes LockFreeStack::pop(), also reads LockFreeStack::top() and pops that element from the stack
- Thread B executes Atomic::cmpxchg(&_first, prev, next); in G1SegmentedArray::create_new_segment but it fails because another thread already registered a different segment
- Thread B calls G1SegmentedArraySegment::delete_segment and frees the value
- Thread A tries to access top()->next in LockFreeStack::pop(), which causes a segfault because top() was freed by thread B
(Reported by [~chaeubl])
- Thread A executes G1SegmentedArray::create_new_segment and tries to pop an element from the _free_segment_list. For that, thread A executes LockFreeStack::pop()
- Thread A reads LockFreeStack::top()
- Thread B executes LockFreeStack::pop(), also reads LockFreeStack::top() and pops that element from the stack
- Thread B executes Atomic::cmpxchg(&_first, prev, next); in G1SegmentedArray::create_new_segment but it fails because another thread already registered a different segment
- Thread B calls G1SegmentedArraySegment::delete_segment and frees the value
- Thread A tries to access top()->next in LockFreeStack::pop(), which causes a segfault because top() was freed by thread B
(Reported by [~chaeubl])
- backported by
-
JDK-8291870 Race freeing remembered set segments
- Resolved
-
JDK-8292125 Race freeing remembered set segments
- Resolved
-
JDK-8292149 Race freeing remembered set segments
- Resolved
- relates to
-
JDK-8292030 Fix GlobalCounter shutdown problem with remembered set
- Open
(1 links to)