12 RFR(M) 8195635: [Graal] nsk/jvmti/unit/ForceEarlyReturn/earlyretbase crashes with assertion "compilation level out of bounds"

dean.long at oracle.com dean.long at oracle.com
Tue Jan 29 01:13:21 UTC 2019


http://cr.openjdk.java.net/~dlong/8195635/webrev.5/
https://bugs.openjdk.java.net/browse/JDK-8195635

Please see the bug report for all the gory details.  Here's the short 
version:

If we allow any safepoint to be a suspend point, we run into trouble 
with PopFrame and ForceEarlyReturn, which reasonably expect the top 
frame not to change between the suspend and when the 
PopFrame/ForceEarlyReturn is executed.  Normally this is not an issue, 
but certain safepoints cause problems, when we are about to call a new 
Java method.  In particular, if we safepoint and suspend in 
JavaCallWrapper, the top frame will still be the caller, but when we 
execute the PopFrame/ForceEarlyReturn we will be in the callee.

The solution this patch takes is to block suspend around troublesome VM 
code using a new "allow_suspend" thread flag.  This means 
JavaThread::java_suspend can't just ask the VMThread to safepoint and be 
done.  Instead it has wait and allow threads to roll forward to an 
allowed suspend point.

dl


More information about the serviceability-dev mailing list