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

Erik Gahlin egahlin at openjdk.org
Sat Jul 26 16:56:55 UTC 2025


On Sat, 26 Jul 2025 02:16:49 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

>> JFR emergency dump would happen when OOM was thrown. However it would not contain most recent `OldObjectSample` events emitted by LeakProfiler.
>> 
>> I [reported this issue in past](https://mail.openjdk.org/pipermail/hotspot-jfr-dev/2019-January/000381.html), and it seems to be difficult to fix soon, and also JDK codebase has been updated in several years. It brings us to fix this issue easier than past.
>> 
>> So I propose again to emit the events from LeakProfiler when OOM happened.
>> This change passed `jdk_jfr` tests on Linux x64 (excepts TestHeapSummaryEventPSParOld.java reported in [JDK-8364082](https://bugs.openjdk.org/browse/JDK-8364082))
>> 
>> Related email thread: https://mail.openjdk.org/pipermail/hotspot-jfr-dev/2025-July/008007.html
>
> Yasumasa Suenaga has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Rename is_oom to emit_old_object_samples

src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp line 563:

> 561:     LeakProfiler::emit_events(max_jlong, false, false);
> 562:   } else {
> 563:     EventShutdown e;

Do you know why EventShutDown is not always emitted?

Is it emitted from somewhere else, so we would get two events if we always emitted it here?

I know it was this way before your change, but I’d like to understand why. We want to add another parameter or write a comment to explain the behavior.

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

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


More information about the hotspot-jfr-dev mailing list