G1: Incorrect verification logic in G1ConcurrentMark::clear_next_bitmap

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P4
    • 19
    • Affects Version/s: 16, 17, 18, 19
    • Component/s: hotspot
    • gc
    • b31

        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();
        ```

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

                Created:
                Updated:
                Resolved: