-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8367721: Test compiler/arguments/TestCompileTaskTimeout.java crashed: SIGSEGV #27331
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
👋 Welcome back mhaessig! A progress list of the required criteria for merging this PR into |
@mhaessig 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 36 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.
That makes a lot of sense to me.
If I understand well, it happens when the compile task is naturally terminating, when compilation is done in pretty much the delay granted by the timeout. It doesn't come from the concurrent handling of the timeout and some other kind of error?
Thank you for taking a look, @marc-chevalier.
There is only one timeout going on for every compile task and thus for every compiler thread and they are delivered directly to the native thread running the compiler thread with the timed out compile task. Since |
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.
Looks good to me, too!
Thank you for your reviews, @chhagedorn and @marc-chevalier! /integrate |
Going to push as commit 04dcaa3.
Your commit was automatically rebased without conflicts. |
The test
TestCompileTaskTimeout.java
runsjava -Xcomp -XX:CompileTaskTimeout=1 --version
to demonstrate that the timeout works. Part of the timeout working involves it printing the method of the compile task. Inspecting the core file of the execution that failed with aSIGSEGV
in the compile task timeout signal handler, the backtrace looks as follows:So, the compile task hit the timeout during destruction of the underlying
CompileTaskWrapper
. Since the timeout was disarmed only after setting the task to null in the destructor, the signal handler segfaulted when trying to access the method of the compile task to print it out. This PR addresses this issue by moving up the disarmament of the timeout to the top of the destructor.Because this issue can only be triggered with bad --- or good, depending on your view --- luck on timing, I could not devise a regression test. But this is not too big of an issue, since the CI already caught this issue.
Testing:
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/27331/head:pull/27331
$ git checkout pull/27331
Update a local copy of the PR:
$ git checkout pull/27331
$ git pull https://git.openjdk.org/jdk.git pull/27331/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 27331
View PR using the GUI difftool:
$ git pr show -t 27331
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/27331.diff
Using Webrev
Link to Webrev Comment