-
Notifications
You must be signed in to change notification settings - Fork 6k
8252593: [TESTBUG] serviceability/jvmti/GetLocalVariable/GetLocalWithoutSuspendTest.java failed with JVMTI_ERROR_INVALID_SLOT #142
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
…outSuspendTest.java failed with JVMTI_ERROR_INVALID_SLOT
👋 Welcome back rrich! A progress list of the required criteria for merging this PR into |
@reinrich 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 |
Thanks @iignatev for providing the hint that helped finding the cause for the JVMTI_ERROR_INVALID_SLOT I would like to take a different approach now for fixing this by making sure the JVMTI GetLocalObject() call refers to one of the recursiveMethod frames on stack. How to do that? Can I close this PR and create a new branch JDK-8252593-2 and then a new PR? |
You can also change the PR back to draft, revamp the changes and then |
Thanks @dcubed-ojdk ! I didn't know the PR can be converted back to draft. I will try that. |
After a closer look I don't think this is possible. The GetLocalObject() call should target a frame deep in the stack to prolongue the stackwalk. So the depth D will be large. This means the target thread has to wait in a frame that has more than D caller frames to make sure at D is a frame of recursiveMethod. This will make the test less sensitive as a regression test because if there is an unsafe stackwalk to find the target frame for the GetLocalObject() at depth D it will likely still succeed, because the target thread does not return from all the recursive activations of recursiveMethod. So I'm still proposing the original fix which silently accepts JVMTI_ERROR_INVALID_SLOT. |
@reinrich This change now passes all automated pre-integration checks. In addition to the automated checks, the change must also fulfill all project specific requirements After integration, the commit message will be:
Since the source branch of this PR was last updated there have been 58 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 automatic rebasing, please merge ➡️ To integrate this PR with the above commit message to the |
Thanks Serguei and Chris. I'll integrate this tomorrow. |
/integrate |
@reinrich Since your change was applied there have been 58 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit a4c6a99. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Continuing review [1] after transition to Git/Github.
I still cannot reproduce the issue.
RFC on alternatives:
Any other ideas?
I'm in favour of 1.
[1] http://mail.openjdk.java.net/pipermail/serviceability-dev/2020-September/032876.html
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/142/head:pull/142
$ git checkout pull/142