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 19:26:22 PDT 2013
Withdrawn. There might be a better way to do it. -- Chris
On Apr 29, 2013, at 5:36 PM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
> 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