United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 7012766 assert(false) failed: DEBUG MESSAGE in MacroAssembler::debug32
7012766 : assert(false) failed: DEBUG MESSAGE in MacroAssembler::debug32

Details
Type:
Bug
Submit Date:
2011-01-17
Status:
Closed
Updated Date:
2012-02-01
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
generic
Priority:
P2
Resolution:
Fixed
Affected Versions:
hs20
Fixed Versions:
hs20

Related Reports
Backport:
Backport:
Relates:

Sub Tasks

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
                                     
2011-01-21
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/b599a4c6c2df
                                     
2011-01-19
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.
                                     
2011-01-18



Hardware and Software, Engineered to Work Together