RFR (S): 7196277: JSR 292: Two jck/runtime tests crash on java.lang.invoke.MethodHandle.invokeExact

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Apr 29 20:18:21 PDT 2013


Looks good to me.
CC to runtime group since you changed throw_unsatisfied_link_error().

Thanks,
Vladimir

On 4/29/13 5:36 PM, Christian Thalinger 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-runtime-dev mailing list