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

missing is_unloading() check in SharedRuntime::fixup_callers_callsite()

    XMLWordPrintable

Details

    • b21

    Backports

      Description

        From JDK-8293648, Erik Österlund wrote:

        I also noticed that SharedRuntime::fixup_callers_callsite() patches callsites if the c2i adapter's Method's code is is_in_use(). It seems to miss an "&& !is_unloading()" in there. In practice that has not made a big difference until I removed the sweeper. Because nmethods would typically be is_unloading, because the Method is also unloading, in which case the c2i adapter entry barrier will take care of it. But now that an nmethod can become is_unloading also because it's "cold" or such, its Method is way more likely to be is_alive. And then we can get past the c2i adapter entry barrier, and end up calling fixup_callers_callsite, and miss the is_unloading check on the code, and break unlinking monotonicity of the inline cache cleaning. That could have pretty disasterous consequences when using ZGC.

        Attachments

          Issue Links

            Activity

              People

                dlong Dean Long
                dlong Dean Long
                Votes:
                0 Vote for this issue
                Watchers:
                7 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: