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
8260401: StackOverflowError on open WindowsPreferences #2326
Conversation
👋 Welcome back jpai! A progress list of the required criteria for merging this PR into |
The code change looks all right. It would be better if there were a test, but apparently this might depend on the user who runs the test not having registry access rights. |
Hello Brian, Thank you for the review.
That's correct. Looking at the code, it looks to me that this will require very specific setup of the Windows system to be able to trigger the error.
Should I go ahead and integrate this? |
Actually, I didn't notice that this PR wasn't marked as reviewed. I'll wait for the review(s) then. |
I'd let it sit for a bit in case others want to comment. |
Ping. Anymore reviews/suggestions from anyone? |
Did you run this through the usual CI tests in all tiers? |
Hello Brian, Do you mean other than the ones that have been automatically run and passed in the GitHub actions against this PR? I don't have a Windows box, but if there's some specific tests you want me to run locally, please do let me know and I'll run them. |
On Feb 11, 2021, at 7:35 PM, Jaikiran ***@***.***> wrote:
Did you run this through the usual CI tests in all tiers?
Hello Brian,
Do you mean other than the ones that have been automatically run and passed in the GitHub actions against this PR? I don't have a Windows box, but if there's some specific tests you want me to run locally, please do let me know and I'll run them.
I ran this through our internal CI tests and saw no problems.
|
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 think you can go ahead and integrate this now.
@jaikiran 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 202 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 |
Thank you Brian for the review and help in testing the change. |
/integrate |
@jaikiran Since your change was applied there have been 202 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit 849390a. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Can I please get a review for this change which proposes to fix the issue reported in https://bugs.openjdk.java.net/browse/JDK-8260401?
As noted in that issue, when the constructor of
java.util.prefs.WindowsPreferences
runs into an error while dealing with the Windows registry, it logs a warning message. The message construction callsrootNativeHandle()
(on the same instance ofWindowsPreferences
that's being constructed) which then ultimately ends up calling the constructor ofWindowsPreferences
which then again runs into the Windows registry error and attempts to log a message and this whole cycle repeats indefinitely leading to thatStackOverFlowError
.Based on my limited knowledge of the code in that constructor and analyzing that code a bit, it's my understanding (and also the input provided by the reporter of the bug) that the log message should actually be using the
rootNativeHandle
parameter that is passed to this constructor instead of invoking therootNativeHandle()
method. The commit in this PR does this change to use the passedrootNativeHandle
in the log message.Furthermore, there's another constructor in this class which does a similar thing and potentially can run into the same error as this one. I've changed that constructor too, to avoid the call to
rootNativeHandle()
method in that log message. Reading the log message that's being generated there, it's my understanding that this change shouldn't cause any inaccuracy in what's being logged and in fact, I think it's now more precise about which handle returned the error code.Finally, this log message creation, in both the constructors, also calls
windowsAbsolutePath()
andbyteArrayToString()
methods. ThebyteArrayToString()
is a static method and a call to it doesn't lead back to the constructor again. ThewindowsAbsolutePath()
is a instance method and although it does use a instance variableabsolutePath
, that instance variable is already initialized appropriately by the time thiswindowsAbsolutePath()
gets called in the log message. Also, thewindowsAbsolutePath()
call doesn't lead back to the constructor of theWindowsPreferences
so it doesn't pose the same issue as a call torootNativeHandle()
.Given the nature of this issue, I haven't added any jtreg test for this change.
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/2326/head:pull/2326
$ git checkout pull/2326