While working on 4397112 with ladybird hotspot and after fixing the
Bytecode::code() parameter passing (see the fix for 4397112),
the test fails with another assertion:
#
# assert(is_native() && bci == 0 || 0 <= bci && bci < code_size(), "illegal bci")
#
# Error happened during: mark sweep
#
# Error ID: /net/jano/export/disk05/hotspot/users/mchung/service_ws/src/share/vm/oops/methodOop.cpp, 124 [ Patched ]
The VM asserts in mark_sweep_phase3 while adjusting the pointers in
JVMDI breakpoints. The method's bci is 1 but code size is also 1.
The method's code size should be 7.
Ladybird stack trace (from where it asserts):
[10] methodOopDesc::bcp_from(this = 0xf8528e70, bci = 1), line 124 in "methodOop.cpp"
[11] JvmdiBreakpoint::getBcp(this = 0x1b9b50), line 301 in "jvmdi.cpp"
[12] JvmdiBreakpoint::getCacheValue(this = 0x1b9b50), line 305 in "jvmdi_impl.hpp"
[13] GrowableCache::oops_do(this = 0x1a7898, f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 226 in "jvmdi.cpp"
[14] JvmdiBreakpointCache::oops_do(this = 0x1a7894, f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 235 in "jvmdi_impl.hpp"
[15] JvmdiBreakpoints::oops_do(this = 0x1a7890, f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 395 in "jvmdi.cpp"
[16] JvmdiCurrentBreakpoints::oops_do(f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 503 in "jvmdi.cpp"
[17] jvmdi::oops_do(f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 3847 in "jvmdi.cpp"
[18] MarkSweep::mark_sweep_phase3(), line 669 in "markSweep.cpp"
[19] MarkSweep::invoke_at_safepoint(size_to_be_allocated = 0, deferred = 0, clear_all_softrefs = 0, notify_ref_lock = 0, cause = _full_gc_alot), line 174 in "markSweep.cpp"
[20] VM_MarkSweep::doit(this = 0xffbed498), line 118 in "vm_operations.cpp"
[21] VM_Operation::evaluate(this = 0xffbed498), line 34 in "vm_operations.cpp"
[22] VMThread::evaluate_operation(this = 0x126970, op = 0xffbed498), line 225 in "vmThread.cpp"
[23] VMThread::loop(this = 0x126970), line 301 in "vmThread.cpp"
[24] VMThread::run(this = 0x126970), line 165 in "vmThread.cpp"
[25] _start(data = 0x126970), line 493 in "os_solaris.cpp"
With further analysis done on 2001-02-13, (below is copied from 4397112 comment):
mandy.chung@eng 2001-02-13
It's a bug in GrowableCache::oops_do(), which is called by its subclass JvmdiBreakpoints::oops_do(). During mark_sweep_phase3, jvmdi::oops_do() is called to adjust oop pointers for any methodOops to be moved. VM asserts when GrowableCache::oops_do() attempts to access the new memory location of a methodOop before it gets moved in phase4.
With Merlin Build b54 the assertion seems to be:
# HotSpot Virtual Machine Error, assertion failure
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# assert(p == top() || oop(p)->is_oop(), "p is not a block start")
#
# Error happened during: full generation collection
#
# Error ID: /usr/re/hotspot/hotspot1.4/ws/solsparc/hotspot1.4beta/src/share/vm/memory/space.cpp, 813 [ Patched ]
#
# Problematic Thread: prio=5 tid=0x108008 nid=0x4 runnable
#
Dumping core....
doit[9]: 10855 Abort(coredump)
The test should be failing with merlin-beta hotspot but isn't. Need to refine
the test to reproduce the assertion failure.
Bytecode::code() parameter passing (see the fix for 4397112),
the test fails with another assertion:
#
# assert(is_native() && bci == 0 || 0 <= bci && bci < code_size(), "illegal bci")
#
# Error happened during: mark sweep
#
# Error ID: /net/jano/export/disk05/hotspot/users/mchung/service_ws/src/share/vm/oops/methodOop.cpp, 124 [ Patched ]
The VM asserts in mark_sweep_phase3 while adjusting the pointers in
JVMDI breakpoints. The method's bci is 1 but code size is also 1.
The method's code size should be 7.
Ladybird stack trace (from where it asserts):
[10] methodOopDesc::bcp_from(this = 0xf8528e70, bci = 1), line 124 in "methodOop.cpp"
[11] JvmdiBreakpoint::getBcp(this = 0x1b9b50), line 301 in "jvmdi.cpp"
[12] JvmdiBreakpoint::getCacheValue(this = 0x1b9b50), line 305 in "jvmdi_impl.hpp"
[13] GrowableCache::oops_do(this = 0x1a7898, f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 226 in "jvmdi.cpp"
[14] JvmdiBreakpointCache::oops_do(this = 0x1a7894, f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 235 in "jvmdi_impl.hpp"
[15] JvmdiBreakpoints::oops_do(this = 0x1a7890, f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 395 in "jvmdi.cpp"
[16] JvmdiCurrentBreakpoints::oops_do(f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 503 in "jvmdi.cpp"
[17] jvmdi::oops_do(f = 0xfdffae20 = &MarkSweep::adjust_root_pointer(oopDesc**)), line 3847 in "jvmdi.cpp"
[18] MarkSweep::mark_sweep_phase3(), line 669 in "markSweep.cpp"
[19] MarkSweep::invoke_at_safepoint(size_to_be_allocated = 0, deferred = 0, clear_all_softrefs = 0, notify_ref_lock = 0, cause = _full_gc_alot), line 174 in "markSweep.cpp"
[20] VM_MarkSweep::doit(this = 0xffbed498), line 118 in "vm_operations.cpp"
[21] VM_Operation::evaluate(this = 0xffbed498), line 34 in "vm_operations.cpp"
[22] VMThread::evaluate_operation(this = 0x126970, op = 0xffbed498), line 225 in "vmThread.cpp"
[23] VMThread::loop(this = 0x126970), line 301 in "vmThread.cpp"
[24] VMThread::run(this = 0x126970), line 165 in "vmThread.cpp"
[25] _start(data = 0x126970), line 493 in "os_solaris.cpp"
With further analysis done on 2001-02-13, (below is copied from 4397112 comment):
mandy.chung@eng 2001-02-13
It's a bug in GrowableCache::oops_do(), which is called by its subclass JvmdiBreakpoints::oops_do(). During mark_sweep_phase3, jvmdi::oops_do() is called to adjust oop pointers for any methodOops to be moved. VM asserts when GrowableCache::oops_do() attempts to access the new memory location of a methodOop before it gets moved in phase4.
With Merlin Build b54 the assertion seems to be:
# HotSpot Virtual Machine Error, assertion failure
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# assert(p == top() || oop(p)->is_oop(), "p is not a block start")
#
# Error happened during: full generation collection
#
# Error ID: /usr/re/hotspot/hotspot1.4/ws/solsparc/hotspot1.4beta/src/share/vm/memory/space.cpp, 813 [ Patched ]
#
# Problematic Thread: prio=5 tid=0x108008 nid=0x4 runnable
#
Dumping core....
doit[9]: 10855 Abort(coredump)
The test should be failing with merlin-beta hotspot but isn't. Need to refine
the test to reproduce the assertion failure.
- duplicates
-
JDK-4433330 HS1.4(sparc) crashes with assertion at methodOop.cpp, 143
-
- Closed
-
- relates to
-
JDK-4397112 test clrall001 crashes with assertion at space.cpp, 588
-
- Closed
-