-
Notifications
You must be signed in to change notification settings - Fork 5.8k
8343344: Windows attach logic failed to handle a failed open on a pipe #21888
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 amenkov! A progress list of the required criteria for merging this PR into |
@alexmenkov 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 |
@alexmenkov 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. |
Webrevs
|
/label add serviceability |
@alexmenkov |
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.
Hi,
List of tests doesn't mention tier4 where the failures were first noticed?
When PipeChannel::open logs error, and returns false, then Win32AttachOperation::open_pipe returns that value, then Win32AttachListener::dequeue() also logs that there was an error?
Is that message just a less detailed duplicate?
(it states whether it's v1 or v2, but maybe that's not that interesting?)
In the v2 case, Win32AttachListener::dequeue() will log if open succeeded, if !op->read_request().
But AttachOperation::read_request mostly logs its own errors as well.
I think it's only this one:
639 if (buffer_size < 0) {
640 return false;
...where it does not log when returning false. Maybe it should log then, and Win32AttachListener::dequeue() does not need to log?
While are are here, is it possible to address these at the same time?
open/src/hotspot/share/services/attachListener.cpp
typo "ot" -> "or"
631 case ATTACH_API_V2: // 000000
632 if (AttachListener::get_supported_version() < 2) {
633 log_error(attach)("Failed to read request: v2 is unsupported ot disabled");
exact -> "exactly"
649 // Must contain exact 'buffer_size' bytes.
Also, is the line 631 comment, with 3 args, misleading? (moving away from exactly 3 arguments...)
Thanks!
Good point. Run it now, but it takes time to complete.
Ok, done.
Fixed.
Fixed.
Fixed. |
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.
Thanks Alex, looks good.
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.
/integrate |
Going to push as commit a4e2c20.
Your commit was automatically rebased without conflicts. |
@alexmenkov Pushed as commit a4e2c20. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
The fix adds correct handling of "could not open pipe" errors in attach listener instead of assert which causes target VM crash.
testing: tier1,tier2,hs-tier5-svc
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/21888/head:pull/21888
$ git checkout pull/21888
Update a local copy of the PR:
$ git checkout pull/21888
$ git pull https://git.openjdk.org/jdk.git pull/21888/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 21888
View PR using the GUI difftool:
$ git pr show -t 21888
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/21888.diff
Using Webrev
Link to Webrev Comment