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

oopDesc::is_valid() is broken

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P3
    • 13
    • 13
    • hotspot
    • b21

    Description

      Somehow it doesn't recognize my oop during debugging when calling hsfind() which calls oopDesc::oop_or_null and ends up calling G1ContinguousSpace::block_start which gets a bad address for klass and crashes.

      #8 0x00007ffff5c2d0b9 in G1ContiguousSpace::block_start (this=0x7ffff021e960, p=0x715d8cd78)
          at open/src/hotspot/share/gc/g1/heapRegion.inline.hpp:110
      #9 0x00007ffff5b179c9 in G1CollectedHeap::block_start (this=0x7ffff0042a00, addr=0x715d8cd78)
          at open/src/hotspot/share/gc/g1/g1CollectedHeap.cpp:2250
      #10 0x00007ffff60e05b3 in oopDesc::oop_or_null (addr=0x715d8cd78 "\005")
          at open/src/hotspot/share/oops/oop.cpp:206
      #11 0x00007ffff61001b9 in os::print_location (st=0x7ffff0000930, x=30431300984, verbose=false)
          at open/src/hotspot/share/runtime/os.cpp:1052
      #12 0x00007ffff59cf4d4 in hsfind (x=30431300984) at open/src/hotspot/share/utilities/debug.cpp:598

      But it prints fine because it's an oop.

      (gdb) call method_mirror->print()
      java.lang.reflect.Method
      {0x0000000715d8cd78} - klass: 'java/lang/reflect/Method'
       - ---- fields (total size 11 words):
       - 'override' 'Z' @12 false
       - volatile 'accessCheckCache' 'Ljava/lang/Object;' @16 NULL
       (0)
      ...

      It looks like is_valid() returns false when it should, but then things go downhill from there.

      Attachments

        Issue Links

          Activity

            People

              coleenp Coleen Phillimore
              coleenp Coleen Phillimore
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: