JDK-6848466 : frame::frame_size() assertion failure with -XX:+DebugDeoptimization
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs16
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-06-05
  • Updated: 2010-04-02
  • Resolved: 2009-06-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u18Fixed 7Fixed hs16Fixed
The following code implements frame::frame_size in  src/cpu/x86/vm/frame_x86.cpp:
int frame::frame_size() const {
RegisterMap map(JavaThread::current(), false);
frame sender = this->sender(&map);
return sender.sp() - sp();

It builds the RegisterMap from the current thread. This should only works for the top
frame. This will cause an assertion failure in JavaThread::current() in that the current
thread is not a java thread.

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/eacd97c88873

SUGGESTED FIX frame::frame_size should take a RegisterMap* argument which is used to compute the sender frame.