Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4433338

JvmdiBreakpoint::getCacheValue called during GC would crash VM

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.4.0
    • vm-legacy
    • None
    • sparc
    • solaris_8

      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.

            mchung Mandy Chung (Inactive)
            mchung Mandy Chung (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: