JDK-7012766 : assert(false) failed: DEBUG MESSAGE in MacroAssembler::debug32
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs20
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2011-01-17
  • Updated: 2012-02-01
  • Resolved: 2011-03-08
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
6u25Fixed 7Fixed hs20Fixed
Related Reports
Relates :  
Description
VM crashes on i586 (all OSes) with

Reproducible starting HS 20 b07 (not HS 20 b06)

=============== DEBUG MESSAGE: method needs synchronization ================

...

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/tmp/jprt/P2/B/191050.ct232829/source/src/cpu/x86/vm/assembler_x86.cpp:5049), pid=26814, tid=7
#  assert(false) failed: DEBUG MESSAGE
#
# JRE version: 7.0-b125
# Java VM: Java HotSpot(TM) Server VM (20.0-b07-internal-201101141910.ct232829.main_to_comp-fastdebug compiled mode solaris-x86 )

Comments
EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/b599a4c6c2df
21-01-2011

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/b599a4c6c2df
19-01-2011

EVALUATION The fix for 4930919 removed some code to restore the methodOop in the frame after a runtime call which can leave the value stale. --- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Mon Jan 10 03:58:07 2011 -0800 +++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Mon Jan 10 18:46:29 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1367,15 +1367,8 @@ address InterpreterGenerator::generate_n if (ProfileInterpreter) { // We have decided to profile this method in the interpreter __ bind(profile_method); - - __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::profile_method), rsi, true); - - __ movptr(rbx, Address(rbp, method_offset)); // restore methodOop - __ movptr(rax, Address(rbx, in_bytes(methodOopDesc::method_data_offset()))); - __ movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax); - __ test_method_data_pointer(rax, profile_method_continue); - __ addptr(rax, in_bytes(methodDataOopDesc::data_offset())); - __ movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax); + __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::profile_method)); + __ set_method_data_pointer_for_bcp(); __ jmp(profile_method_continue); } // Handle overflow of counter and compile method All the profile_method calls have this problem.
18-01-2011