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

"oopmap not found" assertion failure in jvmpi heap dump collection

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P2
    • Resolution: Fixed
    • Affects Version/s: 1.4.0
    • Fix Version/s: 1.4.0
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      beta3
    • CPU:
      generic, sparc
    • OS:
      generic, solaris_8

      Description

      Problem: (see also 4469343)
      JProbe fails to get heap dump and VM crashes when traversing oops in the stack
      frame of a thread exiting a compiled method during heap dump collection and got
      "oopmap not found" assertion:

      # assert(!precise || at(i)->offset() == pc_offset, "oopmap not found")
      #
      # Error happened during: post JVMPI heap dump
      #
      # Error ID:
      /export/files/ladybird_fixes/src/share/vm/compiler/oopMap.cpp, 310 [
      Patched ]

      and
      # assert(i < len, "oopmap not found")
      #
      # Error happened during: post JVMPI heap dump
      #
      # Error ID:
      /export/files/ladybird_fixes/src/share/vm/compiler/oopMap.cpp, 309 [

      (both with nid=0x4, i.e. the VMThread)

      SharedRuntime::jvmpi_method_exit is NOT a leaf since safepoint can occur while
      a thread is in jvmpi::post_method_exit_event. One reason for that is that
      jvmpi::post_event_vm_mode makes calls to ThreadStateTransition::transition(),
      which allows safepoint to block.

      As discussed with Dave Cox, it's better to make C1 to generate oopmap for
      method exit and define SharedRuntime::jvmpi_method_exit as a JRT_ENTRY for
      Merlin. If necessary, we can also port the fix to 1.3.1_02 patch.

      We might have the same problem for monitor_exit, which is defined as a leaf,
      but it's not when jvmpi monitor exit event is enabled. So we might want
      to do the same thing for monitor_exit.


      mandy.chung@eng 2001-08-09

      4489387 also reports the same problem but the test fails when running with
      -Xrunhprof:cpu=times. To reproduce the failure,

      > cd /home/zzhang/bugs/footprint
      > java_g -Xrunhprof:cpu=times -cp jmol-0.2/jars/jmol.jar
      -Djmol.home=jmol-0.2 jmol.Jmol

      HPROF ERROR: thread local table NULL in method exit cb5a0
      HPROF ERROR: thread local table NULL in method exit cb5a0
      HPROF ERROR: thread local table NULL in method exit cc2a0
      HPROF ERROR : stack underflow in method exit
      HPROF ERROR : stack underflow in method exit
      default to Motif 2.1, os is: 5.8
      #
      # HotSpot Virtual Machine Error, assertion failure
      # Please report this error at
      # http://java.sun.com/cgi-bin/bugreport.cgi
      #
      # Java VM: Java HotSpot(TM) Client VM (1.4-internal-debug mixed mode)
      #
      # assert(i < len, "oopmap not found")
      #
      # Error ID:
      /export/hotspot/users1/mchung/merlin_baseline/src/share/vm/compiler/oopMap.cpp,
      335 [ Patched ]
      #
      # Problematic Thread: prio=5 tid=0xc98d0 nid=0x4 runnable
      #
      Dumping core....

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              dmcox David Cox
              Reporter:
              mchung Mandy Chung
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: