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