[11] RFR(XS): 8198826: -XX:+VerifyStack fails with fatal error: ExceptionMark constructor expects no pending exceptions (original) (raw)

Tobias Hartmann tobias.hartmann at oracle.com
Thu Mar 1 17:07:03 UTC 2018


Thanks Vladimir!

Best regards, Tobias

On 01.03.2018 18:10, Vladimir Kozlov wrote:

Looks nice.

Thanks, Vladimir On 3/1/18 1:32 AM, Tobias Hartmann wrote: Hi David,

thanks for looking at this! On 28.02.2018 22:53, David Holmes wrote: Once an exception is pending code has to be very careful about how it proceeds - both in terms of "the previous action failed so what do I do now?" and "I've got a pending exception so need to be very careful about what I call".

I'm not familiar with this code at all and looking at it it is very hard for me to understand exactly what the occurrence of the OOME means for the rest of the code. Normally I would expect to see code "bail out" as soon as possible, while this code seems to continue to do lots of (presumably necessary) things. In this case, C2 did aggressive scalarization based on escape analysis to remove an object allocation in compiled code. When deoptimizing, we need to restore the interpreter state including re-allocating that scalarized object (because the interpreter does not support scalarization). If re-allocation fails due to an OOME, we still need to continue restoring the interpreter state (while propagating that exception to be later thrown by the interpreter). So we cannot just simply bail out but need to make sure that the following code works fine with a pending exception. My concern with this simple fix is that if the occurrence of the OOME has actually resulted in breakage, then skipping the VerifyStack logic may be skipping the code that would detect that breakage. In which case it may be better to save and clear the exception and restore it afterwards. Yes, that's also what Vladimir suggested in the bug comments. Here's a new webrev that saves and restores the pending oop while still executing the stack verification code: http://cr.openjdk.java.net/~thartmann/8198826/webrev.01/ Thanks, Tobias



More information about the hotspot-dev mailing list