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

OopMapSet::all_do does oms.next() twice during iteration

    Details

    • Subcomponent:
    • Resolved In Build:
      b21
    • Verification:
      Not verified

      Backports

        Description

        It seems to be introduced by JDK-8232083. New code does oms.next() twice:

            for (OopMapStream oms(map); !oms.is_done(); oms.next()) { // <--- here
              OopMapValue omv = oms.current();
              if (omv.type() != OopMapValue::derived_oop_value) {
                continue;
              }
              ...
              if (base_loc != NULL && *base_loc != NULL && !CompressedOops::is_base(*base_loc)) {
                derived_oop_fn(base_loc, derived_loc);
              }
              oms.next(); // <--- then here
            }

        We are seeing some weird, random, intermittent test failures with Shenandoah in jdk/jdk recently, this might explain it.

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  never Tom Rodriguez
                  Reporter:
                  shade Aleksey Shipilev
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  7 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: