diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java index 5c85b8a73ce..f3b5da141fc 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java @@ -924,6 +924,15 @@ private static synchronized void registerDeadlockDetectionEvent() { private static synchronized void registerSmapEntryEvent() { log.debug("Initializing smap entry scraping"); + + // Load JFR Handlers class early, if present (it has been moved and renamed in JDK23+). + // This prevents a deadlock. See https://bugs.openjdk.org/browse/JDK-8371889. + try { + AGENT_CLASSLOADER.loadClass("jdk.jfr.events.Handlers"); + } catch (Exception e) { + // Ignore when the class is not found or anything else goes wrong. + } + try { final Class smapFactoryClass = AGENT_CLASSLOADER.loadClass(