RFR 8214572: nsk/jvmti/unit/ForceEarlyReturn/earlyretbase should not suspend the thread when the top frame executes JVMCI code

dean.long at oracle.com dean.long at oracle.com
Mon Dec 3 19:53:36 UTC 2018


On 11/30/18 7:46 PM, JC Beyler wrote:
> Questions because I'm not familiar with JVMCI consequences so not 
> really comments on the webrev but so that I know:
>   - Is it normaly that you can suspend when you are in a JVMCI frame?

Yes, because it's just Java code, and we allow all Java code to be 
suspended, even Graal and JVMCI code.

> will/is there not a better way that we could detect that we are in a 
> JVMCI frame?

We could check the threads's _adjusting_comp_level flag for this 
particular case, if we decided that we don't want to be able to debug 
JVMCI Java code.

> Is it always safe to suspend a JVMCI frame?

That's a good question.  If it was grabbing any locks, then suspending 
it could cause problems for other threads calling into JVMCI.

Another solution would be to do adjusting_comp_level() in a separate 
thread.  So I think there are at least 3 possible solutions:

1) Allow JVMCI adjusting_comp_level call to be suspended/debugged
2) Don't allow it to be suspended/debugged,
     a) by running in a separate thread, or
     b) don't suspend when _adjusting_comp_level flag is set

We could introduce a concept of "system Java" code, which, just like 
Unix kernel code that is not debuggable without a kernel debugger, would 
not normally be debuggable without setting a special flag.

CCing graal-dev alias.

dl


More information about the serviceability-dev mailing list