RFR (S): 7196277: JSR 292: Two jck/runtime tests crash on java.lang.invoke.MethodHandle.invokeExact
Christian Thalinger
christian.thalinger at oracle.com
Mon Apr 29 17:36:48 PDT 2013
http://cr.openjdk.java.net/~twisti/7196277
7196277: JSR 292: Two jck/runtime tests crash on java.lang.invoke.MethodHandle.invokeExact
Reviewed-by:
The problem is the logic in InterpreterGenerator::generate_native_entry: it checks for an oop return value and tries to unbox it before pending exceptions are thrown.
If throw_unsupported_operation_exception (which is a void method!) is called for a native method that has an oop return type the native entry tries to unbox the value in the return register. Which happens to be okay for debug builds but for product builds contains a random value and that crashes the VM.
The fix is to not install a native entry point to eventually throw the exception when being called but throw the UnsupportedOperationException in NativeLookup::lookup.
This patch also hardens throw_unsatisfied_link_error to find a similar issue more easily in the future.
src/share/vm/prims/nativeLookup.cpp
src/share/vm/runtime/sharedRuntime.cpp
More information about the hotspot-compiler-dev
mailing list