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

[ppc] Fix VerifyOops. Errors show since 8231058.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 14
    • 8, 11, 13
    • hotspot
    • b23
    • ppc

      The flag VerifyOops makes the VM insert code checking for valid oops in many places. Especially, it generates calls to the verify method in generated assembly. VerifyOops is only available in the debug build.

      "8231058: VerifyOops crashes with assert(_offset >= 0) failed: offset for non comment?" added a test that enables VerifyOops. This test causes the VM to crash on ppc because the VerifyOops code had not been maintained. It has been broken since the port was first submitted.

      The crash is caused by passing compressed oops from
      LIR_Assembler::store() to the checker routine.
      This is fixed by implementing a checker routine verify_coop
      that first decompresses the coop. This makes the new
      test pass.

      Further testing showed that the additional checker
      coding makes Patching Stubs overflow. These
      can not be increased in size to fit the code.
      JDK-8233081 assures the verify code is not copied to
      the Patching Stub eliminating this problem.

      Further the change extends the message printed when verification
      of an oop failed. First, it prints the location in the source
      code where the checker code was generated. Second,
      it now prints the faulty oop.

      Also the message printed when PatchingStubs
      overflow is improved.

      The change extends the test to run with and without compressed oops.

            goetz Goetz Lindenmaier
            goetz Goetz Lindenmaier
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: