In G1CollectedHeap::get_gc_alloc_regions() we should either:
a. Handle aliases correctly and not call set_gc_alloc_region() twice for a region or
b. We could just eliminate the gc alloc region reuse code. Because currently gc alloc regions are discarded after the collection.
This will be piggybacked on the fix for 6604422. The changes of that CR ensure that only one old region (and not survivor regions) will be retained across GCs, which makes the problem described here (calls to set_gc_alloc_region() multiple times on the same region) not possible. So, I don't think there's much point in dealing with the problem directly right now. I've added a couple of asserts to catch the problem if in the future this assumption changes.