Request for reviews (M): 7090904: JSR 292: JRuby junit test crashes in PSScavengeRootsClosure::do_oop
Tom Rodriguez
tom.rodriguez at oracle.com
Tue Oct 18 12:02:32 PDT 2011
On Oct 18, 2011, at 1:51 AM, Christian Thalinger wrote:
> http://cr.openjdk.java.net/~twisti/7090904/
>
> 7090904: JSR 292: JRuby junit test crashes in PSScavengeRootsClosure::do_oop
> Reviewed-by:
>
> A couple of JRuby junit tests crash in various forms (mostly GC
> related) when running on 64-bit Linux. Although it looks like a GC
> related problem it actually is a deoptimization bug.
>
> Tom already had a fix ready but we were unable to write a test case to
> prove the correctness of the fix. An assert added in
> AbstractInterpreter::layout_activation shows that the JRuby crashes
> are indeed an incarnation of this deoptimization bug.
>
> The bug itself is in the deoptimization logic that calculates the size
> of parameter space in the caller frame. Method handle invokes may
> involve fairly arbitrary chains of calls so it's impossible to know
> how much actual space the caller has for locals.
I think we need to check for MethodHandle.invoke in addition to invokeExact.
tom
>
> The fix is to always assume zero parameters for method handle call
> sites.
>
> Extensive testing with JRuby junit tests.
>
> src/share/vm/runtime/deoptimization.cpp
> src/cpu/x86/vm/templateInterpreter_x86_32.cpp
> src/cpu/x86/vm/templateInterpreter_x86_64.cpp
> src/share/vm/interpreter/bytecodeTracer.cpp
> src/share/vm/runtime/frame.cpp
> src/share/vm/runtime/frame.hpp
> src/share/vm/runtime/thread.cpp
>
More information about the hotspot-compiler-dev
mailing list