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

G1 BOT wrongly assumes that objects must always begin at the start of G1BlockOffsetTablePart

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 10
    • 10
    • hotspot
    • None
    • gc
    • b21

      The following assert in g1BlockOffsetPart is not always true:
      assert(_bot->offset_array(0) == 0, "objects can't cross covered areas");

      It holds only if the first region in the heap is committed, otherwise it will it-self trigger an assertion during the call to offset_array(). What would be a valid assertion to make is:
      _bot->offset_array(_bot->index_for(_space->bottom())) == 0
      I.e. an object starts at the bottom of this space. This is true for all regions accept continues humongous, so they will need special treatment.

      We currently never uncommit the first region of the heap, so the impact and likelihood of this issue is pretty low.

            sjohanss Stefan Johansson
            sjohanss Stefan Johansson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: