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

G1: Incorrect verification logic in G1ConcurrentMark::clear_next_bitmap

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P4
    • 19
    • 16, 17, 18, 19
    • hotspot
    • gc
    • b31

    Backports

      Description

        In `G1ConcurrentMark::clear_next_bitmap`:

        ```
        guarantee(!may_yield || cl.is_complete(), "Must have completed iteration when not yielding.");
        ```

        From the msg and the surroundong context, the intent is to check sth like:

        ```
        if (!may_yield) {
          assert(is_complete);
        }
        ```

        which should be `may_yield || is_complete`.

        With the current code on master, this verification will trigger in a situation where a Full GC tries to start while concurrent-mark is in its final phase, i.e.

        ```
          // Phase 7: Clear bitmap for next mark.
          phase_clear_bitmap_for_next_mark();
        ```

        Attachments

          Issue Links

            Activity

              People

                ayang Albert Yang
                ayang Albert Yang
                Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: