RFR: 8273608: Deadlock when jcmd of OnError attaches to itself [v4]
Xin Liu
xliu at openjdk.java.net
Wed Oct 6 01:39:12 UTC 2021
On Tue, 5 Oct 2021 18:27:45 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:
>> Xin Liu has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Cleanup: remove a statment of debugging.
>
> test/hotspot/jtreg/runtime/ErrorHandling/TestOutOfMemoryErrorFromNIO.java line 25:
>
>> 23:
>> 24: /*
>> 25: * @test TestOutOfMemoryErrorFromNIO
>
> I would rename the test. The point is not to test OOM from NIO, but to test XX:OnError with jcmd which attaches to the parent.
>
> You could do the same with any OOM, right? E.g. just start the VM with a very small MaxMetaspaceSize. You would not even need a main function for that, since the VM would not come up but throw a OOM right away,
>
> Proposal (but feel free to come up with something better): "TestOnErrorWithSelfAttachingJCmd"
I found HotSpot is very subtle when it comes to `MaxMetaspaceSize` and `-XX:AbortVMOnException=java.lang.OutOfMemoryError`
On my host, the watershed is 3M. If I give it 2M, it will ignore `AbortVMOnException`.
java -XX:MaxMetaspaceSize=2M -XX:AbortVMOnException=java.lang.OutOfMemoryError
Error occurred during initialization of VM
OutOfMemoryError: Metaspace
Flip code blocks here can solve this problem. is it intentional?
diff --git a/src/hotspot/share/memory/metaspace.cpp b/src/hotspot/share/memory/metaspace.cpp
index 74b5d1a0b30..efe430f7d3c 100644
--- a/src/hotspot/share/memory/metaspace.cpp
+++ b/src/hotspot/share/memory/metaspace.cpp
@@ -974,15 +974,16 @@ void Metaspace::report_metadata_oome(ClassLoaderData* loader_data, size_t word_s
space_string);
}
- if (!is_init_completed()) {
- vm_exit_during_initialization("OutOfMemoryError", space_string);
- }
-
if (out_of_compressed_class_space) {
THROW_OOP(Universe::out_of_memory_error_class_metaspace());
} else {
THROW_OOP(Universe::out_of_memory_error_metaspace());
}
+
+ if (!is_init_completed()) {
+ vm_exit_during_initialization("OutOfMemoryError", space_string);
+ }
+
}
-------------
PR: https://git.openjdk.java.net/jdk/pull/5590
More information about the hotspot-dev
mailing list