RFR (XS): 8232951: TestG1ParallelPhases.java fails with phase NonYoungFreeCSet not found
Thomas Schatzl
thomas.schatzl at oracle.com
Thu Oct 31 09:51:58 UTC 2019
Hi,
On 28.10.19 11:40, Leo Korinth wrote:
> Hi.
>
> Just want to add some information, because I think it will fail again.
>
> The buggy test case is written by me and the provoke mixed gc part is
> copied mostly either from TestOldGenCollectionUsage or TestLogging (as
> it is hard to share this code due to JTREG). However when I did "copy"
> the code I also did try to improve the code, this could be the reason
> for this failure. I did at least two "improvements" in that I removed
> magic constants when allocating the 20k arrays and instead calculated
> how many I would need; this made the algorithm allocate ~2M instead of
> ~3M which could be a problem although to my understanding it should not
> be. Another change I made is that I will not provoke a gc by allocating
> until out-of-memory. The original code seems to try to provoke a gc by
> starting concurrent marks and young gc, but kind of fail-safes with the
> code after the comment // allocate more objects to provoke GC. Having
> this code I guess would fix the problem with the test case, but on the
> other hand, we would not know why the youngGC() after concurrent mark
> does not provoke a mixed gc (I guess it should, but correct me if this
> is false).
I do not think either change makes a difference.
>
> I have talked to Thomas off-list, and I think AlwaysTenure is not the
> solution to the problem we have. I think adding the debug options is
> great and should be done, and AlwaysTenure seems better than
> MaxTenuringThreshold=1 but we should expect the test case to continue to
> fail in the future.
>
> If you go by adding AlwaysTenure instead of MaxTenuringThreshold=1,
> please also remove one getWhiteBox().youngGC() in allocateOldObjects so
> that we do not leave "magic" lines in the test case. Also update the
> comment to // Do *one* young collections...
> and there is another "-XX:MaxTenuringThreshold=1" that needs to be
> updated. I need no webrev for these changes.
Updated in place; also fixed Kim's comment about line length.
http://cr.openjdk.java.net/~tschatzl/8232951/webrev/
>
> I am sorry that my "improvements" probably caused this failure, though
> just having heaps of code and not understanding why, is probably worse
> in the long run --- at least that is my thinking.
The question I have is whether I can push these changes under this CR
(and if it occurs again we at least have a log to look at) or use
another CR for it?
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list