RFR (S): 7196277: JSR 292: Two jck/runtime tests crash on java.lang.invoke.MethodHandle.invokeExact
christian.thalinger at oracle.com
Thu May 2 18:10:53 PDT 2013
On Apr 29, 2013, at 7:26 PM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
> Withdrawn. There might be a better way to do it. -- Chris
The fix is to resurrect the original throwing code and not overwrite already registered native entries when linking methods.
> On Apr 29, 2013, at 5:36 PM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
>> 7196277: JSR 292: Two jck/runtime tests crash on java.lang.invoke.MethodHandle.invokeExact
>> 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.
More information about the hotspot-compiler-dev