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

G1 does not retire allocation buffers after reference processing work

XMLWordPrintable

    • gc
    • b12

        When -XX:+ParallelRefProcEnabled is active and run in debug mode G1 crashes with

        ------------------------------------------------------------------
        Internal Error at g1CollectedHeap.hpp:1823, pid=30589, tid=139755213526784
        assert(_priority_buffer[pr]->is_retired()) failed: alloc buffers should all retire at this point.

        Do you want to debug the problem?

        To debug, run 'gdb /proc/30589/exe 30589'; then switch to thread 139755213526784 (0x00007f1b4bdb9700)
        Enter 'yes' to launch gdb automatically (PATH must include gdb)
        Otherwise, press RETURN to abort...
        ==============================================================================

        during reference processing.

        The problem is that after soft reference processing, the allocation buffers are not retired. Unknown impact on product mode, but the possibility of heap "corruption" as the remainders of the allocation buffers are not filled with dummy objects (I think).

        I think this issue has been in since G1 supports reference processing during STW pauses (r2720, bug#6484982)

        Patch attached.

        Preliminary ILW: impact H (assertion failure), likelhood L (needs debug build), workaround M (disable the given switch) -> would be P3, but this only occurs with a debug build, and there have been successful runs without problems on large applications with product builds, so P4 for now

              tschatzl Thomas Schatzl
              tschatzl Thomas Schatzl
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: