-
Notifications
You must be signed in to change notification settings - Fork 152
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
8235211: serviceability/attach/RemovingUnixDomainSocketTest.java fails with AttachNotSupportedException: Unable to open socket file #32
Conversation
…s with AttachNotSupportedException: Unable to open socket file
…s "stderr was not empty"
👋 Welcome back xliu! A progress list of the required criteria for merging this PR into |
Webrevs
|
This backport pull request has now been updated with issue from the original commit. |
/issue add JDK-8244973 |
@navyxliu |
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 compared with openjdk/jdk11u-dev#153.
Lgtm, except there's a missing import in RemovingUnixDomainSocketTest.java and LingeredApp.java, vis
import jdk.test.lib.Utils;
Currently, RemovingUnixDomainSocketTest.java isn't running because @test is taken away when we backport JDK-8225690. we try to keep the patch intact in case we enable it in the future.
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.
Lgtm.
@navyxliu This change now passes all automated pre-integration checks. 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 35 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. As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@phohensee, @gnu-andrew) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
@navyxliu This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration! |
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. Clean backport bar the naked_yield/yield change.
Added |
/integrate |
/sponsor |
Going to push as commit 1067c54.
Your commit was automatically rebased without conflicts. |
@phohensee @navyxliu Pushed as commit 1067c54. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Hi,
Could you review this backport of 8235211? This is a follow up of JDK-8225690.
This patch can't be applied to jdk8u cleanly. We replace os::naked_yield with os::yield(), which is available in jdk8u and have same implementations on Linux/BSD/AIX. Except for that, all other changes are just path adjustment.
There's a deadlock in the original backport. Both Signal dispatcher(refer to S for short) and AttachListener(A) are Java Threads. Therefore, they are subject to safepoint synchronization.
A sets
_state
to AL_INITIALIZED and then get blocked at a safepoint(maybe AttachListener::dequeue).If the socket file is deleted and JVM receive SIGQUIT the, S realizes that the socket file has gone in
check_socket_file
and start to reinitialize it. It falls into this loop and prevent itself from reaching the safepoint.If A waked up and realized that the socket has gone, it would set
_state
to AL_NOT_INITIALIZED. Current code is adeadlock. A can’t wake up because S hasn’t reached the safepoint yet. S can’t reach the safepoint because A hasn’t set _state to AL_NOT_INITIALIZED. This patch avoids the deadlock by trapping into blocked state before the loop.Progress
Issues
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk8u-dev pull/32/head:pull/32
$ git checkout pull/32
Update a local copy of the PR:
$ git checkout pull/32
$ git pull https://git.openjdk.java.net/jdk8u-dev pull/32/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 32
View PR using the GUI difftool:
$ git pr show -t 32
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk8u-dev/pull/32.diff