-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8284115: [IR Framework] Compilation is not found due to rare safepoint while dumping PrintIdeal/PrintOptoAssembly #8692
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
Conversation
…t while dumping PrintIdeal/PrintOptoAssembly
👋 Welcome back chagedorn! A progress list of the required criteria for merging this PR into |
@chhagedorn The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
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 am concern that PrintIdeal output is interrupted by output from other threads. It may cause other issues in future again. Can we redirect PrintIdeal
output into a separate file or reorder output like LogCompilation
since it is used for IR testing now (automatic tool)? Originally it was not matter since such output was not used in any tool.
Thanks for your review Vladimir!
Can you elaborate more on what you mean by reordering the I agree that we could make this safer by dumping |
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 would also prefer to not introduce another log file just for IR matching. Together with #8647, this should hopefully fix all issues related to safepointing while printing. The change looks good to me.
@chhagedorn 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 138 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 |
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.
Okay if you say so.
Thanks Tobias and Vladimir for your reviews! If we find more problems in the future or other limitations, we can still come back to this question if we want to introduce a new file. |
/integrate |
Going to push as commit 3984253.
Your commit was automatically rebased without conflicts. |
@chhagedorn Pushed as commit 3984253. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
This is yet another manifestation of the safepointing problem while printing a
PrintIdeal/PrintOptoAssembly
block.In this case here, a safepoint is done and the
<!-- safepoint while printing -->
message is emitted while dumping aPrintIdeal
block ofretainDenominator()
inside thehotspot_pid
file. During this interruption, another test class method is enqueued for compilation which is logged to thehotspot_pid
file before the printing of thePrintIdeal
block resumes:The
HotSpotPidFileParser
looks for these enqueue messages containing the method name in order to find and correctly map the correspondingPrintIdeal
andPrintOptoAssembly
outputs. However, theHotSpotPidFileParser
does not expect such an enqueuing message to be found inside aPrintIdeal/PrintOptoAssembly
block and thus ignores it. As a result, we later do not parse thePrintIdeal
andPrintOptoAssembly
output of the enqueued method during the safepoint and fail with the assertion that we did not find any compilation output for the method.In the example above, the assertion says that we did not find the compilation output of
identityThird()
whose enqueue message was ignored inside thePrintIdeal
block ofretainDominator()
.The proposed fix is to make
HotSpotPidFileParser
aware of the possibility of a safepoint while reading thePrintIdeal
orPrintOptoAssembly
output and therefore add a check if there was a method enqueued for compilation while reading insideBlockOutputReader::readBlock()
.Thanks,
Christian
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/8692/head:pull/8692
$ git checkout pull/8692
Update a local copy of the PR:
$ git checkout pull/8692
$ git pull https://git.openjdk.java.net/jdk pull/8692/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 8692
View PR using the GUI difftool:
$ git pr show -t 8692
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/8692.diff