RFR 8174954: Parameter target type is allowed access after a module read edge or a package export has occurred after failed resolution

Lois Foltan lois.foltan at oracle.com
Thu Oct 19 18:50:45 UTC 2017


Looks good Harold.  Thank you for fixing this!
Lois

On 10/16/2017 10:20 AM, harold seigel wrote:
> Hi,
>
> Please review this new JDK-10 fix for bug JDK-8174954.  If the initial 
> resolution attempt fails with a LinkageError exception then the fix 
> saves the exception in the resolution_errors table and sets a flag in 
> the constant pool Cache, indicating the failure.  Subsequent attempts 
> to do the same resolution will see that the flag is set, retrieve the 
> exception from the resolution_errors table, and throw it, instead of 
> re-trying the resolution.
>
> The fix also prevents a race condition if two or more threads try to 
> do the same resolution concurrently.  When a thread tries to record 
> the result of its resolution attempt, it will check to see if another 
> thread recorded its result first.  If so, then it will use the result 
> recorded by the other thread.  Otherwise, it will record and use its 
> result.  Access to the resolution result is protected by the 
> 'resolved_references' lock.
>
> Open webrev: http://cr.openjdk.java.net/~hseigel/bug_8174954.1/webrev/
>
> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8174954
>
> The fix was tested with the JCK Lang and VM tests, the JTreg hotspot, 
> java/io, java/lang, java/util, and other tests, the co-located NSK 
> tests, JPRT, with Mach5 tier2 - tier5 tests, and by hand to check race 
> condition handling.
>
> Thanks, Harold
>



More information about the hotspot-runtime-dev mailing list