-
Notifications
You must be signed in to change notification settings - Fork 5.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8253877: gc/g1/TestGCLogMessages.java fails - missing "Evacuation failure" message #624
Conversation
👋 Welcome back tschatzl! A progress list of the required criteria for merging this PR into |
In the future there may be a better way to force "Evacuation Failure" with e.g. forcibly pinning regions in young gen - but then again this would not be called an evacuation failure. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is good to make use of the debug feature to ensure stable testing and I'm approving this change.
I guess an approach if we don't want to use it is to just have an allocation loop that keeps everything live, it should trigger evacuation failures before throwing OOME.
@tschatzl This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 58 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
Exactly the catch-OOME approach seemed too error-prone. We may not recover from the OOME handler. |
I agree, trying to recover from OOME is very error-prone. In this case since the test is starting in its own process it might be fine to just let it exit with an OOME. We would have to change the check for exit-code 0, but I think it should work. Not saying this is a better approach, just threw it out here :) Again, I'm good with the change you propose. |
/integrate |
@tschatzl Since your change was applied there have been 78 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit cd66e0f. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Hi all,
can I have reviews for this change to gc/g1/TestGCLogMessages to hopefully make it more reliable?
One subtest tries to force evacuation failure, but apparently this does not always succeed. Particularly with upcoming young gen sizing changes, there seems to be a larger than before chance that the current mechanism does not work.
This mechanism assumes that before that test the young gen has been sized that much that the allocation of a half-heap humongous object causes an evacuation failure next time - of course that's a somewhat dodgy assumption that apparently recently started failing more.
The change employs the G1 internal evacuation failure debugging mechanism to force this kind of situation. The advantage is that this is guaranteed to work, the disadvantage is that it relies on that feature.
Additionally I did some slight renaming to the helper that used the term "ToSpaceExhaustion" instead of "EvacuationFailure" which is the name of the message that is actually checked for.
Testing: 2k+ tests of previous version without reproduction (meaning that at least for me without context of other tests, the issue has not been reproducable, at least not with the mentioned 1% failure rate), 3k tests with new version without reproduction
Thanks,
Thomas
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/624/head:pull/624
$ git checkout pull/624