Withdrawn: 8257817: Shenandoah: Don't race with conc-weak-in-progress flag in weak-LRB

Roman Kennke rkennke at openjdk.java.net
Mon Dec 7 15:27:12 UTC 2020


On Mon, 7 Dec 2020 11:37:36 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

> The weak-LRB code is currently subject to a race. Consider this sequence of events between a Java thread and GC threads:
> During conc-weak-root-in-progress:
> - Java: Load referent out of Reference, it is unreachable but not-yet-cleared
> - GC: Clears referent
> - GC: Concurrently turn off conc-weak-root-in-progress
> - Java: Checks conc-weak-root-in-progress, sees that it's false, continues to use/evac it -> successfully resurrected unreachable object. This must not happen.
> 
> AFAICT, this also affects conc-class-unloading and weak-roots. 
> 
> Proposed fix is to check for evac-in-progress instead. This should be acceptable because this is not a very common path and not very performance-sensitive.
> 
>  - [x] hotspot_gc_shenandoah

This pull request has been closed without being integrated.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1662



More information about the hotspot-gc-dev mailing list