RFR: 8377665: JFR: Symbol table not setup for early class unloading

Stefan Johansson sjohanss at openjdk.org
Thu Feb 12 08:29:35 UTC 2026


On Wed, 11 Feb 2026 12:31:24 GMT, Joel Sikström <jsikstro at openjdk.org> wrote:

> Hello,
> 
> We observe a crash when running a major GC very early, which unloads classes, calling into JFR which is not properly set up for class unloading this early. A simple fix for this is to move the creation of the symbol table to the early setup of JFR, which allows us to successfully call `JfrCheckpointManager::on_unloading_classes()`.
> 
> Testing:
>  * Crash reproducer no longer crashes
>  * Running through Oracle's tier1-4

src/hotspot/share/jfr/recorder/jfrRecorder.cpp line 111:

> 109:     return false;
> 110:   }
> 111: 

Could/should this be moved in under `is_started_on_commandline()` like for the check point manager above?

>From what I understand, the only time we can get to the problematic case with an uninitialized table is when started on the command-line and it would then make sense to only do this initialization for this case. Or am I missing something?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29672#discussion_r2797415457


More information about the hotspot-jfr-dev mailing list