jdk8u-dev
jdk8u-dev copied to clipboard
8352942: jdk/jfr/startupargs/TestMemoryOptions.java fails with 32-bit build
Hi All, I would like to add this bug fix for the bug in jdk/jfr/startupargs/TestMemoryOptions.java. This test contains 24 test cases and fails the "ThreadBufferSizeExceedMemorySize" case. The cause of this bug is the memory allocation issue, which occurs only on 32-bit Server VM, not on Client VM or 64-bit JDK. The failure happens because Server VM's default heap size reduces available memory space, causing JFR to fail memory allocation. To resolve this issue, -Xmx256M is explicitly set, matching the Client VM default heap size, ensuring sufficient memory space remains available for JFR. I believe that this test verifies that the combination of memory options for JFR is valid or invalid and that the MaxHeapSize setting does not affect the verification. Change has been verified locally, test-fix only, no risk.
Would someone please review this fix?
Progress
- [ ] Change must be properly reviewed (1 review required, with at least 1 Reviewer)
- [x] Change must not contain extraneous whitespace
- [x] Commit message must refer to an issue
- [ ] JDK-8352942 needs maintainer approval
Issue
- JDK-8352942: jdk/jfr/startupargs/TestMemoryOptions.java fails with 32-bit build (Bug - P4)
Reviewing
Using git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk8u-dev.git pull/641/head:pull/641
$ git checkout pull/641
Update a local copy of the PR:
$ git checkout pull/641
$ git pull https://git.openjdk.org/jdk8u-dev.git pull/641/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 641
View PR using the GUI difftool:
$ git pr show -t 641
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk8u-dev/pull/641.diff
Using Webrev
:wave: Welcome back tkiriyama! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.
❗ This change is not yet ready to be integrated. See the Progress checklist in the description for automated requirements.
@phohensee Thank you for your comment. I see. I'll check it. Sorry, let me confirm that first. Is 32-bit support being maintained in the later JDK versions (11, 17, 21, 24, tip)? If it is, I'm happy to fix this in the later JDKs. It seems like there's already a lack of enthusiasm for 32-bit development in JDK 21. https://openjdk.org/jeps/449
Yes, there is lack of enthusiasm for 32-bit ports, and the x86 32-bit port is in the process of being removed in JDK 25. But, the arm-32 port still exists in tip, and the LTS 32-bit ports are still supported.
@phohensee
I am sorry for the late reply as it took time to verify. I didn't have an arm environment, so I built a slightly older revision in an x86 environment. As a result, with the default Xmx, the latest java hardly reproduced this problem. If larger Xmx is used, the combination with the JFR option may cause an error.
$ jdk_32/jdk/bin/java -Xmx3221225472 -XX:FlightRecorderOptions=threadbuffersize=30m -XX:StartFlightRecording -version
[0.144s][warning][jfr,system] Memory allocation failed for size [31457304] bytes
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 31457304 bytes. Error detail: AllocateHeap
# An error report file with more information is saved as:
# /work/hs_err_pid411102.log
[thread 411103 also had an error]
[error occurred during error reporting (), id 0xe0000001, Out of Memory Error (src/hotspot/share/jfr/utilities/jfrAllocation.cpp:84)]
It is unlikely that the tests will fail with the latest java, but the tests are potentially risky and I will fix it in the latest java. This pull request is closed once.