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

Incorrect static call stub interactions with class unloading

    XMLWordPrintable

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      b21
    • Verification:
      Verified

      Description

      Static call stubs are cleared in debug builds before an assert checking for dead metadata. The reason is that the static call stub has metadata, and it complains about dead metadata being left after inline cache cleaning of is_alive nmethods.

      ...except class redefinition looks at this metadata to determine if there is old metadata in subsequent safepoints, and they could have been unloaded then. Ouch. So maybe we shouldn't squelch that assert.

      ...and with concurrent class unloading, we can't just clear the call stub of a concurrently running JavaThread; they can get stuck in an infinite loop.

      All things considered, clearing static call stubs when unloading the code cache seems like a bad idea.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              eosterlund Erik Ă–sterlund
              Reporter:
              eosterlund Erik Ă–sterlund
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: