From 33ebcc5d1af336c59ae151c97d14b8ee0581e903 Mon Sep 17 00:00:00 2001 From: Gyuheon Oh Date: Tue, 23 Jun 2026 14:10:03 -0400 Subject: [PATCH 1/2] Include JVM distribution details in crash report --- .../datadog/crashtracking/CrashUploader.java | 15 +++++++ .../datadog/crashtracking/dto/CrashLog.java | 36 +++++++++++++++ .../crashtracking/dto/RuntimeInfo.java | 45 +++++++++++++++++++ .../parsers/HotspotCrashLogParser.java | 21 +++++++++ .../parsers/J9JavacoreParser.java | 15 +++++++ .../parsers/HotspotCrashLogParserTest.java | 21 +++++++++ .../parsers/J9JavacoreParserTest.java | 16 +++++++ .../sample-crash-for-telemetry-2.json | 5 +++ .../sample-crash-for-telemetry-3.json | 5 +++ .../sample-crash-for-telemetry.json | 5 +++ .../golden/errortracking/sample_oom.json | 5 +++ .../sample-crash-for-telemetry-2.json | 5 +++ .../sample-crash-for-telemetry-3.json | 5 +++ .../telemetry/sample-crash-for-telemetry.json | 5 +++ .../golden/telemetry/sample_oom.json | 5 +++ 15 files changed, 209 insertions(+) create mode 100644 dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/RuntimeInfo.java diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java index 6b0a9b388a5..fb13ef22939 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java @@ -577,6 +577,21 @@ private RequestBody makeErrorTrackingRequestBody(@Nonnull CrashLog payload, bool "os.version")); // this has been restructured under OsInfo so taking raw here writer.endObject(); } + // runtime info (JDK vendor and build details from the crash log) + if (payload.runtimeInfo != null) { + writer.name("runtime_info"); + writer.beginObject(); + if (payload.runtimeInfo.jreVersion != null) { + writer.name("jre_version").value(payload.runtimeInfo.jreVersion); + } + if (payload.runtimeInfo.javaVm != null) { + writer.name("java_vm").value(payload.runtimeInfo.javaVm); + } + if (payload.runtimeInfo.vmInfo != null) { + writer.name("vm_info").value(payload.runtimeInfo.vmInfo); + } + writer.endObject(); + } // experimental if (payload.experimental != null && (payload.experimental.ucontext != null diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java index b0508d9ab45..51fa586b25b 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java @@ -41,6 +41,9 @@ public final class CrashLog { public final Experimental experimental; + @Json(name = "runtime_info") + public final RuntimeInfo runtimeInfo; + /** * Useful files for triage and debugging (e.g. {@code /proc/self/maps}, {@code * dynamic_libraries}). @@ -68,6 +71,7 @@ public CrashLog( sigInfo, dataSchemaVersion, null, + null, null); } @@ -83,6 +87,34 @@ public CrashLog( String dataSchemaVersion, Experimental experimental, DynamicLibs files) { + this( + uuid, + incomplete, + timestamp, + error, + metadata, + osInfo, + procInfo, + sigInfo, + dataSchemaVersion, + experimental, + null, + files); + } + + public CrashLog( + String uuid, + boolean incomplete, + String timestamp, + ErrorData error, + Metadata metadata, + OSInfo osInfo, + ProcInfo procInfo, + SigInfo sigInfo, + String dataSchemaVersion, + Experimental experimental, + RuntimeInfo runtimeInfo, + DynamicLibs files) { this.uuid = uuid != null ? uuid : RandomUtils.randomUUID().toString(); this.incomplete = incomplete; this.timestamp = timestamp; @@ -93,6 +125,7 @@ public CrashLog( this.sigInfo = sigInfo; this.dataSchemaVersion = dataSchemaVersion; this.experimental = experimental; + this.runtimeInfo = runtimeInfo; this.files = files; } @@ -123,6 +156,7 @@ public boolean equals(Object o) { && Objects.equals(sigInfo, crashLog.sigInfo) && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion) && Objects.equals(experimental, crashLog.experimental) + && Objects.equals(runtimeInfo, crashLog.runtimeInfo) && Objects.equals(files, crashLog.files); } @@ -140,6 +174,7 @@ public int hashCode() { version, dataSchemaVersion, experimental, + runtimeInfo, files); } @@ -161,6 +196,7 @@ public boolean equalsForTest(Object o) { && Objects.equals(sigInfo, crashLog.sigInfo) && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion) && Objects.equals(experimental, crashLog.experimental) + && Objects.equals(runtimeInfo, crashLog.runtimeInfo) && Objects.equals(files, crashLog.files); } } diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/RuntimeInfo.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/RuntimeInfo.java new file mode 100644 index 00000000000..b103960158c --- /dev/null +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/RuntimeInfo.java @@ -0,0 +1,45 @@ +package datadog.crashtracking.dto; + +import com.squareup.moshi.Json; +import java.util.Objects; + +/** + * JDK runtime information extracted from the hs_err crash log header and vm_info line. This + * captures the exact JDK vendor and build so crash reports can be correlated with the specific + * binaries in use. + */ +public final class RuntimeInfo { + @Json(name = "jre_version") + public final String jreVersion; + + @Json(name = "java_vm") + public final String javaVm; + + @Json(name = "vm_info") + public final String vmInfo; + + public RuntimeInfo(String jreVersion, String javaVm, String vmInfo) { + this.jreVersion = jreVersion; + this.javaVm = javaVm; + this.vmInfo = vmInfo; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RuntimeInfo that = (RuntimeInfo) o; + return Objects.equals(jreVersion, that.jreVersion) + && Objects.equals(javaVm, that.javaVm) + && Objects.equals(vmInfo, that.vmInfo); + } + + @Override + public int hashCode() { + return Objects.hash(jreVersion, javaVm, vmInfo); + } +} diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java index 0c01f6b57a9..934f55b4862 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java @@ -12,6 +12,7 @@ import datadog.crashtracking.dto.Metadata; import datadog.crashtracking.dto.OSInfo; import datadog.crashtracking.dto.ProcInfo; +import datadog.crashtracking.dto.RuntimeInfo; import datadog.crashtracking.dto.SigInfo; import datadog.crashtracking.dto.StackFrame; import datadog.crashtracking.dto.StackTrace; @@ -44,6 +45,9 @@ */ public final class HotspotCrashLogParser { private static final String HOTSPOT_JVM_ARGS_PREFIX = "jvm_args:"; + private static final String JRE_VERSION_PREFIX = "# JRE version: "; + private static final String JAVA_VM_PREFIX = "# Java VM: "; + private static final String VM_INFO_PREFIX = "vm_info: "; private static final DateTimeFormatter ZONED_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("EEE MMM ppd HH:mm:ss yyyy zzz", Locale.getDefault()); private static final DateTimeFormatter OFFSET_DATE_TIME_FORMATTER = @@ -362,6 +366,9 @@ public CrashLog parse(String uuid, String crashLog) { String dynamicLibraryKey = null; boolean previousLineBlank = false; State nextThreadSectionState = null; + String jreVersion = null; + String javaVm = null; + String vmInfo = null; String[] lines = NEWLINE_SPLITTER.split(crashLog); outer: @@ -392,6 +399,11 @@ public CrashLog parse(String uuid, String crashLog) { } } } + if (jreVersion == null && line.startsWith(JRE_VERSION_PREFIX)) { + jreVersion = line.substring(JRE_VERSION_PREFIX.length()).trim(); + } else if (javaVm == null && line.startsWith(JAVA_VM_PREFIX)) { + javaVm = line.substring(JAVA_VM_PREFIX.length()).trim(); + } break; case HEADER: if (line.contains("S U M M A R Y")) { @@ -486,6 +498,8 @@ public CrashLog parse(String uuid, String crashLog) { state = State.DYNAMIC_LIBRARIES; } else if (line.contains("S Y S T E M")) { state = State.SYSTEM; + } else if (vmInfo == null && line.startsWith(VM_INFO_PREFIX)) { + vmInfo = line.substring(VM_INFO_PREFIX.length()).trim(); } else if (line.equals("END.")) { state = State.DONE; } @@ -527,6 +541,8 @@ public CrashLog parse(String uuid, String crashLog) { datetimeRaw = line.substring(6).trim(); } else if (datetime == null && datetimeRaw != null && line.startsWith("timezone: ")) { datetime = dateTimeToISO(datetimeRaw + " " + line.substring(10).trim()); + } else if (vmInfo == null && line.startsWith(VM_INFO_PREFIX)) { + vmInfo = line.substring(VM_INFO_PREFIX.length()).trim(); } break; case DONE: @@ -615,6 +631,10 @@ public CrashLog parse(String uuid, String crashLog) { || (runtimeArgs != null && !runtimeArgs.isEmpty()) ? new Experimental(registers, resolvedMapping, runtimeArgs) : null; + RuntimeInfo runtimeInfo = + (jreVersion != null || javaVm != null || vmInfo != null) + ? new RuntimeInfo(jreVersion, javaVm, vmInfo) + : null; DynamicLibs files = (dynamicLibraryLines != null && !dynamicLibraryLines.isEmpty()) ? new DynamicLibs(dynamicLibraryKey, dynamicLibraryLines) @@ -630,6 +650,7 @@ public CrashLog parse(String uuid, String crashLog) { sigInfo, "1.0", experimental, + runtimeInfo, files); } diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java index f13896b0dca..1a49cbd58d2 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java @@ -11,6 +11,7 @@ import datadog.crashtracking.dto.Metadata; import datadog.crashtracking.dto.OSInfo; import datadog.crashtracking.dto.ProcInfo; +import datadog.crashtracking.dto.RuntimeInfo; import datadog.crashtracking.dto.SigInfo; import datadog.crashtracking.dto.StackFrame; import datadog.crashtracking.dto.StackTrace; @@ -46,6 +47,8 @@ */ public final class J9JavacoreParser { private static final String J9_USER_ARG_PREFIX = "2CIUSERARG"; + private static final String J9_JAVA_VERSION_PREFIX = "1CIJAVAVERSION "; + private static final String J9_VM_VERSION_PREFIX = "1CIVMVERSION"; private final BuildIdCollector buildIdCollector; @@ -119,6 +122,8 @@ public CrashLog parse(String uuid, String javacoreContent) { Map registers = null; RuntimeArgs j9UserArgs = new RuntimeArgs(); + String j9JavaVersion = null; + String j9VmVersion = null; String[] lines = NEWLINE_SPLITTER.split(javacoreContent); @@ -179,6 +184,11 @@ public CrashLog parse(String uuid, String javacoreContent) { if (pidMatcher.matches()) { pid = pidMatcher.group(1); } + if (j9JavaVersion == null && line.startsWith(J9_JAVA_VERSION_PREFIX)) { + j9JavaVersion = line.substring(J9_JAVA_VERSION_PREFIX.length()).trim(); + } else if (j9VmVersion == null && line.startsWith(J9_VM_VERSION_PREFIX)) { + j9VmVersion = line.substring(J9_VM_VERSION_PREFIX.length()).trim(); + } break; case THREADS: @@ -304,6 +314,10 @@ public CrashLog parse(String uuid, String javacoreContent) { || (runtimeArgs != null && !runtimeArgs.isEmpty()) ? new Experimental(registers, runtimeArgs) : null; + RuntimeInfo runtimeInfo = + (j9JavaVersion != null || j9VmVersion != null) + ? new RuntimeInfo(j9JavaVersion, null, j9VmVersion) + : null; return new CrashLog( uuid, @@ -316,6 +330,7 @@ public CrashLog parse(String uuid, String javacoreContent) { sigInfo, "1.0", experimental, + runtimeInfo, null); } diff --git a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java index 2008ac78e05..b03598b9291 100644 --- a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java +++ b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java @@ -337,6 +337,27 @@ public void testParseCurrentThreadName(String line, String expected) { HotspotCrashLogParser.parseCurrentThreadName(line)); } + @TableTest({ + "scenario | filename | expectedJreVersion | expectedVmInfo ", + "Zulu 17 | sample-crash-for-telemetry.txt | OpenJDK Runtime Environment Zulu17.42+20-SA (17.0.7+7) (build 17.0.7+7-LTS) | OpenJDK 64-Bit Server VM (17.0.7+7-LTS) for linux-amd64 JRE (17.0.7+7-LTS) (Zulu17.42+20-SA), built on Apr 11 2023 11:39:51 by \"zulu_re\" with gcc 8.3.0 ", + "Temurin 22 | sample-crash-for-telemetry-2.txt | OpenJDK Runtime Environment Temurin-22.0.1+8 (22.0.1+8) (build 22.0.1+8) | OpenJDK 64-Bit Server VM (22.0.1+8) for linux-amd64 JRE (22.0.1+8), built on 2024-04-16T00:00:00Z by \"admin\" with gcc 11.3.0 ", + "Zulu 8 | sample-crash-for-telemetry-3.txt | OpenJDK Runtime Environment (Zulu 8.70.0.23-CA-macos-aarch64) (8.0_372-b07) (build 1.8.0_372-b07) | OpenJDK 64-Bit Server VM (25.372-b07) for bsd-aarch64 JRE (Zulu 8.70.0.23-CA-macos-aarch64) (1.8.0_372-b07), built on Apr 18 2023 01:36:20 by \"zulu_re\" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.28)", + "Corretto 21 | sample-crash-linux-aarch64.txt | OpenJDK Runtime Environment Corretto-21.0.7.6.1 (21.0.7+6) (build 21.0.7+6-LTS) | OpenJDK 64-Bit Server VM (21.0.7+6-LTS) for linux-aarch64-musl JRE (21.0.7+6-LTS), built on 2025-04-09T23:34:45Z by \"jenkins\" with gcc 12.2.1 20220924 ", + "OpenJDK 25 | sample-crash-macos-aarch64.txt | OpenJDK Runtime Environment (25.0.2+10) (build 25.0.2+10-69) | OpenJDK 64-Bit Server VM (25.0.2+10-69) for bsd-aarch64 JRE (25.0.2+10-69), built on 2025-12-18T11:36:35Z with clang Apple LLVM 15.0.0 (clang-1500.3.9.4) " + }) + public void testRuntimeInfoParsing( + String filename, String expectedJreVersion, String expectedVmInfo) throws Exception { + CrashLog crashLog = + new HotspotCrashLogParser().parse(UUID.randomUUID().toString(), readFileAsString(filename)); + + assertNotNull(crashLog.runtimeInfo, "runtimeInfo should be populated"); + assertNotNull(crashLog.runtimeInfo.jreVersion, "jreVersion should be populated"); + assertNotNull(crashLog.runtimeInfo.javaVm, "javaVm should be populated"); + assertNotNull(crashLog.runtimeInfo.vmInfo, "vmInfo should be populated"); + assertEquals(expectedJreVersion, crashLog.runtimeInfo.jreVersion); + assertEquals(expectedVmInfo, crashLog.runtimeInfo.vmInfo); + } + @Test public void testNoSignalProducesInternalError() throws Exception { // A crash log that reaches the PROCESS section but has no siginfo line diff --git a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java index cab2a9a457e..339f986b2ff 100644 --- a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java +++ b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java @@ -212,6 +212,22 @@ public void testDateTimeParsing() throws Exception { "Expected ISO-8601 format, got: " + crashLog.timestamp); } + @TableTest({ + "scenario | filename | expectedJreVersion ", + "OpenJ9 11 GPF | sample-j9-javacore-gpf.txt | JRE 11.0.12 Linux amd64-64 ", + "OpenJ9 17 OOM | sample-j9-javacore-oom.txt | JRE 17.0.6 Linux amd64-64 ", + "OpenJ9 11 aarch | sample-openj9-11-javacore-gpf.txt | JRE 11 Linux aarch64-64 (build 11.0.28+6) ", + "IBM J9 8 | sample-ibmj9-8-javacore-gpf.txt | JRE 1.8.0 Linux amd64-64 (build 8.0.8.51 - pxa6480sr8fp51-20250819_01(SR8 FP51))" + }) + public void testRuntimeInfoParsing(String filename, String expectedJreVersion) throws Exception { + CrashLog crashLog = + new J9JavacoreParser().parse(UUID.randomUUID().toString(), readFileAsString(filename)); + + assertNotNull(crashLog.runtimeInfo, "runtimeInfo should be populated"); + assertNotNull(crashLog.runtimeInfo.jreVersion, "jreVersion should be populated"); + assertEquals(expectedJreVersion, crashLog.runtimeInfo.jreVersion); + } + @Test public void testNoSignalProducesInternalError() throws Exception { // A javacore with a THREADS section but no 1TISIGINFO line diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json index 85e6d04aa6c..5d9f6bc80c9 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json @@ -26,6 +26,11 @@ "si_pid": 554848, "si_uid": 1000 }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM Temurin-22.0.1+8 (22.0.1+8, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", + "jre_version": "OpenJDK Runtime Environment Temurin-22.0.1+8 (22.0.1+8) (build 22.0.1+8)", + "vm_info": "OpenJDK 64-Bit Server VM (22.0.1+8) for linux-amd64 JRE (22.0.1+8), built on 2024-04-16T00:00:00Z by \"admin\" with gcc 11.3.0" + }, "experimental": { "ucontext": { "RAX": "0x00000000000000ca", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json index 076dc9175f0..c0ebfc780e3 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json @@ -103,6 +103,11 @@ ] } }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM (25.372-b07 mixed mode bsd-aarch64 compressed oops)", + "jre_version": "OpenJDK Runtime Environment (Zulu 8.70.0.23-CA-macos-aarch64) (8.0_372-b07) (build 1.8.0_372-b07)", + "vm_info": "OpenJDK 64-Bit Server VM (25.372-b07) for bsd-aarch64 JRE (Zulu 8.70.0.23-CA-macos-aarch64) (1.8.0_372-b07), built on Apr 18 2023 01:36:20 by \"zulu_re\" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.28)" + }, "files": { "dynamic_libraries": [ "0x00000001ae54a000 \t/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json index 40c7f5fcbe6..bf384ac5abf 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json @@ -472,6 +472,11 @@ "si_code": 1, "si_code_human_readable": "SEGV_MAPERR" }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM Zulu17.42+20-SA (17.0.7+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", + "jre_version": "OpenJDK Runtime Environment Zulu17.42+20-SA (17.0.7+7) (build 17.0.7+7-LTS)", + "vm_info": "OpenJDK 64-Bit Server VM (17.0.7+7-LTS) for linux-amd64 JRE (17.0.7+7-LTS) (Zulu17.42+20-SA), built on Apr 11 2023 11:39:51 by \"zulu_re\" with gcc 8.3.0" + }, "experimental": { "ucontext": { "RAX": "0x00007f36ccfbf170", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json index 5e4c9d17672..99d97218d3e 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json @@ -114,5 +114,10 @@ } ] } + }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM Zulu21.30+15-CA (21.0.1+12-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)", + "jre_version": "OpenJDK Runtime Environment Zulu21.30+15-CA (21.0.1+12) (build 21.0.1+12-LTS)", + "vm_info": "OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for bsd-aarch64 JRE (21.0.1+12-LTS) (Zulu21.30+15-CA), built on 2023-10-11T21:40:40Z by \"zulu_re\" with clang Apple LLVM 12.0.0 (clang-1200.0.32.28)" } } diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json index bf08e913240..c6b58b6e876 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json @@ -32,6 +32,11 @@ "proc_info": { "pid": 576034 }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM Temurin-22.0.1+8 (22.0.1+8, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", + "jre_version": "OpenJDK Runtime Environment Temurin-22.0.1+8 (22.0.1+8) (build 22.0.1+8)", + "vm_info": "OpenJDK 64-Bit Server VM (22.0.1+8) for linux-amd64 JRE (22.0.1+8), built on 2024-04-16T00:00:00Z by \"admin\" with gcc 11.3.0" + }, "sig_info": { "si_code": 0, "si_code_human_readable": "SI_USER", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json index 629742de858..f5922c21422 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json @@ -117,6 +117,11 @@ "proc_info": { "pid": 96267 }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM (25.372-b07 mixed mode bsd-aarch64 compressed oops)", + "jre_version": "OpenJDK Runtime Environment (Zulu 8.70.0.23-CA-macos-aarch64) (8.0_372-b07) (build 1.8.0_372-b07)", + "vm_info": "OpenJDK 64-Bit Server VM (25.372-b07) for bsd-aarch64 JRE (Zulu 8.70.0.23-CA-macos-aarch64) (1.8.0_372-b07), built on Apr 18 2023 01:36:20 by \"zulu_re\" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.28)" + }, "timestamp": "2024-09-25T11:32:03+02:00", "uuid": "a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3", "version_id": 0, diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json index d84bb22493d..3d22181df40 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json @@ -479,6 +479,11 @@ "proc_info": { "pid": 161958 }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM Zulu17.42+20-SA (17.0.7+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", + "jre_version": "OpenJDK Runtime Environment Zulu17.42+20-SA (17.0.7+7) (build 17.0.7+7-LTS)", + "vm_info": "OpenJDK 64-Bit Server VM (17.0.7+7-LTS) for linux-amd64 JRE (17.0.7+7-LTS) (Zulu17.42+20-SA), built on Apr 11 2023 11:39:51 by \"zulu_re\" with gcc 8.3.0" + }, "sig_info": { "si_addr": "0x0000000000000070", "si_code": 1, diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json index 63ee421c2b4..af81388c84e 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json @@ -129,6 +129,11 @@ "proc_info": { "pid": 74045 }, + "runtime_info": { + "java_vm": "OpenJDK 64-Bit Server VM Zulu21.30+15-CA (21.0.1+12-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)", + "jre_version": "OpenJDK Runtime Environment Zulu21.30+15-CA (21.0.1+12) (build 21.0.1+12-LTS)", + "vm_info": "OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for bsd-aarch64 JRE (21.0.1+12-LTS) (Zulu21.30+15-CA), built on 2023-10-11T21:40:40Z by \"zulu_re\" with clang Apple LLVM 12.0.0 (clang-1200.0.32.28)" + }, "timestamp": "2025-11-24T09:43:29+01:00", "uuid": "a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3", "version_id": 0 From 1f201d7b576b007aa872dbee2b702250c7f5cb08 Mon Sep 17 00:00:00 2001 From: Gyuheon Oh Date: Wed, 24 Jun 2026 09:17:57 -0400 Subject: [PATCH 2/2] Add runtime info to experimental instead --- .../datadog/crashtracking/CrashUploader.java | 32 ++++++++--------- .../datadog/crashtracking/dto/CrashLog.java | 36 ------------------- .../crashtracking/dto/Experimental.java | 21 ++++++++--- .../parsers/HotspotCrashLogParser.java | 12 +++---- .../parsers/J9JavacoreParser.java | 12 +++---- .../parsers/HotspotCrashLogParserTest.java | 13 +++---- .../parsers/J9JavacoreParserTest.java | 7 ++-- .../sample-crash-for-telemetry-2.json | 5 --- .../sample-crash-for-telemetry-3.json | 5 --- .../sample-crash-for-telemetry.json | 5 --- .../golden/errortracking/sample_oom.json | 5 --- .../sample-crash-for-telemetry-2.json | 5 --- .../sample-crash-for-telemetry-3.json | 5 --- .../telemetry/sample-crash-for-telemetry.json | 5 --- .../golden/telemetry/sample_oom.json | 5 --- 15 files changed, 56 insertions(+), 117 deletions(-) diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java index fb13ef22939..7a838523993 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java @@ -577,26 +577,12 @@ private RequestBody makeErrorTrackingRequestBody(@Nonnull CrashLog payload, bool "os.version")); // this has been restructured under OsInfo so taking raw here writer.endObject(); } - // runtime info (JDK vendor and build details from the crash log) - if (payload.runtimeInfo != null) { - writer.name("runtime_info"); - writer.beginObject(); - if (payload.runtimeInfo.jreVersion != null) { - writer.name("jre_version").value(payload.runtimeInfo.jreVersion); - } - if (payload.runtimeInfo.javaVm != null) { - writer.name("java_vm").value(payload.runtimeInfo.javaVm); - } - if (payload.runtimeInfo.vmInfo != null) { - writer.name("vm_info").value(payload.runtimeInfo.vmInfo); - } - writer.endObject(); - } // experimental if (payload.experimental != null && (payload.experimental.ucontext != null || payload.experimental.registerToMemoryMapping != null - || payload.experimental.runtimeArgs != null)) { + || payload.experimental.runtimeArgs != null + || payload.experimental.runtimeInfo != null)) { writer.name("experimental"); writer.beginObject(); if (payload.experimental.ucontext != null) { @@ -626,6 +612,20 @@ private RequestBody makeErrorTrackingRequestBody(@Nonnull CrashLog payload, bool } writer.endArray(); } + if (payload.experimental.runtimeInfo != null) { + writer.name("runtime_info"); + writer.beginObject(); + if (payload.experimental.runtimeInfo.jreVersion != null) { + writer.name("jre_version").value(payload.experimental.runtimeInfo.jreVersion); + } + if (payload.experimental.runtimeInfo.javaVm != null) { + writer.name("java_vm").value(payload.experimental.runtimeInfo.javaVm); + } + if (payload.experimental.runtimeInfo.vmInfo != null) { + writer.name("vm_info").value(payload.experimental.runtimeInfo.vmInfo); + } + writer.endObject(); + } writer.endObject(); } // files (e.g. /proc/self/maps or dynamic_libraries) diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java index 51fa586b25b..b0508d9ab45 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/CrashLog.java @@ -41,9 +41,6 @@ public final class CrashLog { public final Experimental experimental; - @Json(name = "runtime_info") - public final RuntimeInfo runtimeInfo; - /** * Useful files for triage and debugging (e.g. {@code /proc/self/maps}, {@code * dynamic_libraries}). @@ -71,7 +68,6 @@ public CrashLog( sigInfo, dataSchemaVersion, null, - null, null); } @@ -87,34 +83,6 @@ public CrashLog( String dataSchemaVersion, Experimental experimental, DynamicLibs files) { - this( - uuid, - incomplete, - timestamp, - error, - metadata, - osInfo, - procInfo, - sigInfo, - dataSchemaVersion, - experimental, - null, - files); - } - - public CrashLog( - String uuid, - boolean incomplete, - String timestamp, - ErrorData error, - Metadata metadata, - OSInfo osInfo, - ProcInfo procInfo, - SigInfo sigInfo, - String dataSchemaVersion, - Experimental experimental, - RuntimeInfo runtimeInfo, - DynamicLibs files) { this.uuid = uuid != null ? uuid : RandomUtils.randomUUID().toString(); this.incomplete = incomplete; this.timestamp = timestamp; @@ -125,7 +93,6 @@ public CrashLog( this.sigInfo = sigInfo; this.dataSchemaVersion = dataSchemaVersion; this.experimental = experimental; - this.runtimeInfo = runtimeInfo; this.files = files; } @@ -156,7 +123,6 @@ public boolean equals(Object o) { && Objects.equals(sigInfo, crashLog.sigInfo) && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion) && Objects.equals(experimental, crashLog.experimental) - && Objects.equals(runtimeInfo, crashLog.runtimeInfo) && Objects.equals(files, crashLog.files); } @@ -174,7 +140,6 @@ public int hashCode() { version, dataSchemaVersion, experimental, - runtimeInfo, files); } @@ -196,7 +161,6 @@ public boolean equalsForTest(Object o) { && Objects.equals(sigInfo, crashLog.sigInfo) && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion) && Objects.equals(experimental, crashLog.experimental) - && Objects.equals(runtimeInfo, crashLog.runtimeInfo) && Objects.equals(files, crashLog.files); } } diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/Experimental.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/Experimental.java index 30d04bc3f76..449bdd93156 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/Experimental.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/Experimental.java @@ -14,21 +14,33 @@ public final class Experimental { @Json(name = "runtime_args") public final List runtimeArgs; + @Json(name = "runtime_info") + public final RuntimeInfo runtimeInfo; + public Experimental(Map ucontext) { - this(ucontext, null, null); + this(ucontext, null, null, null); } public Experimental(Map ucontext, List runtimeArgs) { - this(ucontext, null, runtimeArgs); + this(ucontext, null, runtimeArgs, null); } public Experimental( Map ucontext, Map registerToMemoryMapping, List runtimeArgs) { + this(ucontext, registerToMemoryMapping, runtimeArgs, null); + } + + public Experimental( + Map ucontext, + Map registerToMemoryMapping, + List runtimeArgs, + RuntimeInfo runtimeInfo) { this.ucontext = ucontext; this.registerToMemoryMapping = registerToMemoryMapping; this.runtimeArgs = runtimeArgs; + this.runtimeInfo = runtimeInfo; } @Override @@ -37,11 +49,12 @@ public boolean equals(Object o) { Experimental that = (Experimental) o; return Objects.equals(ucontext, that.ucontext) && Objects.equals(registerToMemoryMapping, that.registerToMemoryMapping) - && Objects.equals(runtimeArgs, that.runtimeArgs); + && Objects.equals(runtimeArgs, that.runtimeArgs) + && Objects.equals(runtimeInfo, that.runtimeInfo); } @Override public int hashCode() { - return Objects.hash(ucontext, registerToMemoryMapping, runtimeArgs); + return Objects.hash(ucontext, registerToMemoryMapping, runtimeArgs, runtimeInfo); } } diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java index 934f55b4862..f4cc8e6874f 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java @@ -625,15 +625,16 @@ public CrashLog parse(String uuid, String crashLog) { registerToMemoryMapping.replaceAll((k, v) -> RedactUtils.redactRegisterToMemoryMapping(v)); resolvedMapping = registerToMemoryMapping; } + RuntimeInfo runtimeInfo = + (jreVersion != null || javaVm != null || vmInfo != null) + ? new RuntimeInfo(jreVersion, javaVm, vmInfo) + : null; Experimental experimental = !registers.isEmpty() || resolvedMapping != null || (runtimeArgs != null && !runtimeArgs.isEmpty()) - ? new Experimental(registers, resolvedMapping, runtimeArgs) - : null; - RuntimeInfo runtimeInfo = - (jreVersion != null || javaVm != null || vmInfo != null) - ? new RuntimeInfo(jreVersion, javaVm, vmInfo) + || runtimeInfo != null + ? new Experimental(registers, resolvedMapping, runtimeArgs, runtimeInfo) : null; DynamicLibs files = (dynamicLibraryLines != null && !dynamicLibraryLines.isEmpty()) @@ -650,7 +651,6 @@ public CrashLog parse(String uuid, String crashLog) { sigInfo, "1.0", experimental, - runtimeInfo, files); } diff --git a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java index 1a49cbd58d2..cb5dc5ed8f5 100644 --- a/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java @@ -309,15 +309,16 @@ public CrashLog parse(String uuid, String javacoreContent) { Integer parsedPid = safelyParseInt(pid); ProcInfo procInfo = parsedPid != null ? new ProcInfo(parsedPid) : null; List runtimeArgs = j9UserArgs.build(); - Experimental experimental = - (registers != null && !registers.isEmpty()) - || (runtimeArgs != null && !runtimeArgs.isEmpty()) - ? new Experimental(registers, runtimeArgs) - : null; RuntimeInfo runtimeInfo = (j9JavaVersion != null || j9VmVersion != null) ? new RuntimeInfo(j9JavaVersion, null, j9VmVersion) : null; + Experimental experimental = + (registers != null && !registers.isEmpty()) + || (runtimeArgs != null && !runtimeArgs.isEmpty()) + || runtimeInfo != null + ? new Experimental(registers, null, runtimeArgs, runtimeInfo) + : null; return new CrashLog( uuid, @@ -330,7 +331,6 @@ public CrashLog parse(String uuid, String javacoreContent) { sigInfo, "1.0", experimental, - runtimeInfo, null); } diff --git a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java index b03598b9291..28bcda39e7f 100644 --- a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java +++ b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/HotspotCrashLogParserTest.java @@ -350,12 +350,13 @@ public void testRuntimeInfoParsing( CrashLog crashLog = new HotspotCrashLogParser().parse(UUID.randomUUID().toString(), readFileAsString(filename)); - assertNotNull(crashLog.runtimeInfo, "runtimeInfo should be populated"); - assertNotNull(crashLog.runtimeInfo.jreVersion, "jreVersion should be populated"); - assertNotNull(crashLog.runtimeInfo.javaVm, "javaVm should be populated"); - assertNotNull(crashLog.runtimeInfo.vmInfo, "vmInfo should be populated"); - assertEquals(expectedJreVersion, crashLog.runtimeInfo.jreVersion); - assertEquals(expectedVmInfo, crashLog.runtimeInfo.vmInfo); + assertNotNull(crashLog.experimental, "experimental should be populated"); + assertNotNull(crashLog.experimental.runtimeInfo, "runtimeInfo should be populated"); + assertNotNull(crashLog.experimental.runtimeInfo.jreVersion, "jreVersion should be populated"); + assertNotNull(crashLog.experimental.runtimeInfo.javaVm, "javaVm should be populated"); + assertNotNull(crashLog.experimental.runtimeInfo.vmInfo, "vmInfo should be populated"); + assertEquals(expectedJreVersion, crashLog.experimental.runtimeInfo.jreVersion); + assertEquals(expectedVmInfo, crashLog.experimental.runtimeInfo.vmInfo); } @Test diff --git a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java index 339f986b2ff..bfa122b0f2e 100644 --- a/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java +++ b/dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/J9JavacoreParserTest.java @@ -223,9 +223,10 @@ public void testRuntimeInfoParsing(String filename, String expectedJreVersion) t CrashLog crashLog = new J9JavacoreParser().parse(UUID.randomUUID().toString(), readFileAsString(filename)); - assertNotNull(crashLog.runtimeInfo, "runtimeInfo should be populated"); - assertNotNull(crashLog.runtimeInfo.jreVersion, "jreVersion should be populated"); - assertEquals(expectedJreVersion, crashLog.runtimeInfo.jreVersion); + assertNotNull(crashLog.experimental, "experimental should be populated"); + assertNotNull(crashLog.experimental.runtimeInfo, "runtimeInfo should be populated"); + assertNotNull(crashLog.experimental.runtimeInfo.jreVersion, "jreVersion should be populated"); + assertEquals(expectedJreVersion, crashLog.experimental.runtimeInfo.jreVersion); } @Test diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json index 5d9f6bc80c9..85e6d04aa6c 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.json @@ -26,11 +26,6 @@ "si_pid": 554848, "si_uid": 1000 }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM Temurin-22.0.1+8 (22.0.1+8, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", - "jre_version": "OpenJDK Runtime Environment Temurin-22.0.1+8 (22.0.1+8) (build 22.0.1+8)", - "vm_info": "OpenJDK 64-Bit Server VM (22.0.1+8) for linux-amd64 JRE (22.0.1+8), built on 2024-04-16T00:00:00Z by \"admin\" with gcc 11.3.0" - }, "experimental": { "ucontext": { "RAX": "0x00000000000000ca", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json index c0ebfc780e3..076dc9175f0 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.json @@ -103,11 +103,6 @@ ] } }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM (25.372-b07 mixed mode bsd-aarch64 compressed oops)", - "jre_version": "OpenJDK Runtime Environment (Zulu 8.70.0.23-CA-macos-aarch64) (8.0_372-b07) (build 1.8.0_372-b07)", - "vm_info": "OpenJDK 64-Bit Server VM (25.372-b07) for bsd-aarch64 JRE (Zulu 8.70.0.23-CA-macos-aarch64) (1.8.0_372-b07), built on Apr 18 2023 01:36:20 by \"zulu_re\" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.28)" - }, "files": { "dynamic_libraries": [ "0x00000001ae54a000 \t/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json index bf384ac5abf..40c7f5fcbe6 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.json @@ -472,11 +472,6 @@ "si_code": 1, "si_code_human_readable": "SEGV_MAPERR" }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM Zulu17.42+20-SA (17.0.7+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", - "jre_version": "OpenJDK Runtime Environment Zulu17.42+20-SA (17.0.7+7) (build 17.0.7+7-LTS)", - "vm_info": "OpenJDK 64-Bit Server VM (17.0.7+7-LTS) for linux-amd64 JRE (17.0.7+7-LTS) (Zulu17.42+20-SA), built on Apr 11 2023 11:39:51 by \"zulu_re\" with gcc 8.3.0" - }, "experimental": { "ucontext": { "RAX": "0x00007f36ccfbf170", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json index 99d97218d3e..5e4c9d17672 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.json @@ -114,10 +114,5 @@ } ] } - }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM Zulu21.30+15-CA (21.0.1+12-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)", - "jre_version": "OpenJDK Runtime Environment Zulu21.30+15-CA (21.0.1+12) (build 21.0.1+12-LTS)", - "vm_info": "OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for bsd-aarch64 JRE (21.0.1+12-LTS) (Zulu21.30+15-CA), built on 2023-10-11T21:40:40Z by \"zulu_re\" with clang Apple LLVM 12.0.0 (clang-1200.0.32.28)" } } diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json index c6b58b6e876..bf08e913240 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.json @@ -32,11 +32,6 @@ "proc_info": { "pid": 576034 }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM Temurin-22.0.1+8 (22.0.1+8, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", - "jre_version": "OpenJDK Runtime Environment Temurin-22.0.1+8 (22.0.1+8) (build 22.0.1+8)", - "vm_info": "OpenJDK 64-Bit Server VM (22.0.1+8) for linux-amd64 JRE (22.0.1+8), built on 2024-04-16T00:00:00Z by \"admin\" with gcc 11.3.0" - }, "sig_info": { "si_code": 0, "si_code_human_readable": "SI_USER", diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json index f5922c21422..629742de858 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.json @@ -117,11 +117,6 @@ "proc_info": { "pid": 96267 }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM (25.372-b07 mixed mode bsd-aarch64 compressed oops)", - "jre_version": "OpenJDK Runtime Environment (Zulu 8.70.0.23-CA-macos-aarch64) (8.0_372-b07) (build 1.8.0_372-b07)", - "vm_info": "OpenJDK 64-Bit Server VM (25.372-b07) for bsd-aarch64 JRE (Zulu 8.70.0.23-CA-macos-aarch64) (1.8.0_372-b07), built on Apr 18 2023 01:36:20 by \"zulu_re\" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.28)" - }, "timestamp": "2024-09-25T11:32:03+02:00", "uuid": "a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3", "version_id": 0, diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json index 3d22181df40..d84bb22493d 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.json @@ -479,11 +479,6 @@ "proc_info": { "pid": 161958 }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM Zulu17.42+20-SA (17.0.7+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)", - "jre_version": "OpenJDK Runtime Environment Zulu17.42+20-SA (17.0.7+7) (build 17.0.7+7-LTS)", - "vm_info": "OpenJDK 64-Bit Server VM (17.0.7+7-LTS) for linux-amd64 JRE (17.0.7+7-LTS) (Zulu17.42+20-SA), built on Apr 11 2023 11:39:51 by \"zulu_re\" with gcc 8.3.0" - }, "sig_info": { "si_addr": "0x0000000000000070", "si_code": 1, diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json index af81388c84e..63ee421c2b4 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.json @@ -129,11 +129,6 @@ "proc_info": { "pid": 74045 }, - "runtime_info": { - "java_vm": "OpenJDK 64-Bit Server VM Zulu21.30+15-CA (21.0.1+12-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)", - "jre_version": "OpenJDK Runtime Environment Zulu21.30+15-CA (21.0.1+12) (build 21.0.1+12-LTS)", - "vm_info": "OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for bsd-aarch64 JRE (21.0.1+12-LTS) (Zulu21.30+15-CA), built on 2023-10-11T21:40:40Z by \"zulu_re\" with clang Apple LLVM 12.0.0 (clang-1200.0.32.28)" - }, "timestamp": "2025-11-24T09:43:29+01:00", "uuid": "a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3", "version_id": 0