-
Notifications
You must be signed in to change notification settings - Fork 722
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
OpenJDK java/nio/Buffer/Chew OutOfMemoryError: Direct buffer memory #17723
Comments
@dmitripivkine fyi |
There is no stored result unfortunately. |
https://openj9-jenkins.osuosl.org/job/Test_openjdk11_j9_sanity.openjdk_s390x_linux_Release_testList_0/4 - ub20-390-6 No diagnostics. We'll need to make a change to cause diagnostics to occur. There is no -Xdump option specified when running the test, we are using the default options. The default options create diagnostics on systhrow OOM, however the OOM is thrown from Java code in this case. |
https://openj9-jenkins.osuosl.org/job/Test_openjdk11_j9_sanity.openjdk_s390x_linux_Nightly_testList_0/24/ - rh7-390-3
|
Added -Xdump option to the test. 10x grinder passed |
Reproduction in https://openj9-jenkins.osuosl.org/job/Grinder_iteration_3/245/ - rh7-390-2 @dmitripivkine pls take a look. |
|
@pshipton Am I reading this correctly that DBB allocation itself is not a problem (15730368 bytes) comparing with other native memory takers (SC, JIT Code Cache)? And, of course, is native memory under 1G is enough to run test properly (container I guess)? |
There are 15 |
@dmitripivkine I believe the test is confirming that unreferenced DBB allocations are freed. The test is running with -Xmx16m which also affects the artificial limit for DBB allocations https://eclipse.dev/openj9/docs/xxmaxdirectmemorysize/ . The test is allocating 64MB in a loop which is well over the limit so the unreferenced allocations need to freed. I'm not sure why we are getting these intermittent failures on zlinux when it doesn't occur on other platforms, and it just recently started showing up. It may be worth a deeper look. Perhaps it's related to the JIT on this platform keeping older references alive. I can look for the JIT option that more aggressively releases references and try a grinder with the option. |
Start with a grinder with -Xint |
I don't think so. There are 15 (keeping 1M DBB each) objects in the Finalization queue (so, seems all of them). There are in Cleared state, so have been processed by GC. There is a question why Finalization is not running? May be there were no recourses to run Finalization thread? There were two SystemGC() back to back. |
There is a lot of compilation activity after second SystemGC. May be it is where computational resources are going to? |
Could be. The code is running this loop https://github.ibm.com/runtimes/openj9-openjdk-jdk11/blob/ibm_sdk/src/java.base/share/classes/java/nio/Bits.java#L156-L172 which is calling Reference.waitForReferenceProcessingImpl() and Thread.sleep() if that returns false. If there doesn't appear to be any problem then I'll just start ignoring the failures. |
There was a failure with -Xint which rules out compilation activity being the problem. Could waitForReferenceProcessingImpl() be returning the wrong value? https://openj9-jenkins.osuosl.org/job/Grinder_iteration_1/328/ on https://openj9-jenkins.osuosl.org/computer/rh7-390-2 |
There is an implementation:
|
Hm,
|
Maybe the finalization thread missed a notification so it doesn't run? |
@tobi fyi |
If we dont see this issue again in the next couple of days we can close it now that the System.gc() changes are in. |
The System.gc() changes are #18044 |
Not seen lately, closing for now. |
|
|
https://openj9-jenkins.osuosl.org/job/Test_openjdk11_j9_sanity.openjdk_s390x_linux_Nightly_testList_1/2/
jdk11_tier1_buffer_0
java/nio/Buffer/Chew.java
https://openj9-artifactory.osuosl.org/artifactory/ci-openj9/Test/Test_openjdk11_j9_sanity.openjdk_s390x_linux_Nightly_testList_1/2/openjdk_test_output.tar.gz
The text was updated successfully, but these errors were encountered: