RFR: 8364090: Dump JFR recording on CrashOnOutOfMemoryError [v4]

Erik Gahlin egahlin at openjdk.org
Tue Jul 29 20:35:54 UTC 2025


On Tue, 29 Jul 2025 20:12:54 GMT, Erik Gahlin <egahlin at openjdk.org> wrote:

>> I'm going to run some testing before approving. 
>> 
>> I don't have a strong opinion on var, but Stuart Marks wrote about when to use it a few years ago:
>> https://openjdk.org/projects/amber/guides/lvti-style-guide
>
> I get the following failure when testing your change:
> 
> `----------System.err:(15/955)----------
> java.lang.RuntimeException: assertGreaterThan: expected 0 > 0
> 	at jdk.test.lib.Asserts.fail(Asserts.java:715)
> 	at jdk.test.lib.Asserts.assertGreaterThan(Asserts.java:403)
> 	at jdk.test.lib.Asserts.assertGreaterThan(Asserts.java:386)
> 	at jdk.jfr.event.oldobject.TestEmergencyDumpAtOOM.test(TestEmergencyDumpAtOOM.java:104)
> 	at jdk.jfr.event.oldobject.TestEmergencyDumpAtOOM.main(TestEmergencyDumpAtOOM.java:109)
> 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
> 	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
> 	at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
> 	at java.base/java.lang.Thread.run(Thread.java:1474)` 
> 	
> 	
> It is hard to guarantee a memory-leak sample. Other tests for OldObjectSample run in a loop until they succeed.
> 
> In the test, you use path-to-gc-roots=true. Is that really needed?

Using an EventStream might simplify the filtering, e.g.

        AtomicLong oldObjects = new AtomicLong();
        AtomicReference<String> reason = new AtomicReference<>();
        try (EventStream stream = EventStream.openFile(...)) {
            stream.onEvent("jdk.Shutdown", e -> reason.set(e.getString("reason")));
            stream.onEvent("jdk.OldObjectSample", e -> oldObjects.incrementAndGet());
            stream.start();
        }
        if (shouldCrash) {
            // validation
        }

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26468#discussion_r2240950420


More information about the hotspot-jfr-dev mailing list