From 87823aebce601659e2fe1fc8ff9db48e64c1e605 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Tue, 17 Mar 2026 11:45:36 +0100 Subject: [PATCH] chore: Add processor context for hotspot crash tracking --- .../datadog/crashtracking/CrashUploader.java | 12 +++++ .../datadog/crashtracking/dto/CrashLog.java | 36 ++++++++++++-- .../crashtracking/dto/Experimental.java | 24 +++++++++ .../parsers/HotspotCrashLogParser.java | 49 ++++++++++++++++--- .../sample-crash-for-telemetry-2.txt | 2 +- .../sample-crash-for-telemetry.txt | 2 +- .../sample-crash-for-telemetry-2.txt | 2 +- .../telemetry/sample-crash-for-telemetry.txt | 2 +- 8 files changed, 115 insertions(+), 14 deletions(-) create mode 100644 dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/Experimental.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 dec01bcbac9..06b0f14744e 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 @@ -561,6 +561,18 @@ private RequestBody makeErrorTrackingRequestBody(@Nonnull CrashLog payload, bool "os.version")); // this has been restructured under OsInfo so taking raw here writer.endObject(); } + // experimental + if (payload.experimental != null && payload.experimental.ucontext != null) { + writer.name("experimental"); + writer.beginObject(); + writer.name("ucontext"); + writer.beginObject(); + for (Map.Entry entry : payload.experimental.ucontext.entrySet()) { + writer.name(entry.getKey()).value(entry.getValue()); + } + writer.endObject(); + writer.endObject(); + } writer.endObject(); } return RequestBody.create(APPLICATION_JSON, buf.readByteString()); 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 cd339934782..17d8ef4c8ff 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 @@ -39,6 +39,8 @@ public final class CrashLog { @Json(name = "sig_info") public final SigInfo sigInfo; + public final Experimental experimental; + public CrashLog( String uuid, boolean incomplete, @@ -49,6 +51,30 @@ public CrashLog( ProcInfo procInfo, SigInfo sigInfo, String dataSchemaVersion) { + this( + uuid, + incomplete, + timestamp, + error, + metadata, + osInfo, + procInfo, + sigInfo, + dataSchemaVersion, + null); + } + + public CrashLog( + String uuid, + boolean incomplete, + String timestamp, + ErrorData error, + Metadata metadata, + OSInfo osInfo, + ProcInfo procInfo, + SigInfo sigInfo, + String dataSchemaVersion, + Experimental experimental) { this.uuid = uuid != null ? uuid : RandomUtils.randomUUID().toString(); this.incomplete = incomplete; this.timestamp = timestamp; @@ -58,6 +84,7 @@ public CrashLog( this.procInfo = procInfo; this.sigInfo = sigInfo; this.dataSchemaVersion = dataSchemaVersion; + this.experimental = experimental; } public String toJson() { @@ -85,7 +112,8 @@ public boolean equals(Object o) { && Objects.equals(osInfo, crashLog.osInfo) && Objects.equals(procInfo, crashLog.procInfo) && Objects.equals(sigInfo, crashLog.sigInfo) - && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion); + && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion) + && Objects.equals(experimental, crashLog.experimental); } @Override @@ -100,7 +128,8 @@ public int hashCode() { procInfo, sigInfo, version, - dataSchemaVersion); + dataSchemaVersion, + experimental); } public boolean equalsForTest(Object o) { @@ -119,6 +148,7 @@ public boolean equalsForTest(Object o) { && Objects.equals(error, crashLog.error) && Objects.equals(procInfo, crashLog.procInfo) && Objects.equals(sigInfo, crashLog.sigInfo) - && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion); + && Objects.equals(dataSchemaVersion, crashLog.dataSchemaVersion) + && Objects.equals(experimental, crashLog.experimental); } } 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 new file mode 100644 index 00000000000..687a8db5511 --- /dev/null +++ b/dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/Experimental.java @@ -0,0 +1,24 @@ +package datadog.crashtracking.dto; + +import java.util.Map; +import java.util.Objects; + +public final class Experimental { + public final Map ucontext; + + public Experimental(Map ucontext) { + this.ucontext = ucontext; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof Experimental)) return false; + Experimental that = (Experimental) o; + return Objects.equals(ucontext, that.ucontext); + } + + @Override + public int hashCode() { + return Objects.hash(ucontext); + } +} 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 0a14d77f5ce..eb1b724832f 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 @@ -7,6 +7,7 @@ import datadog.crashtracking.buildid.BuildInfo; import datadog.crashtracking.dto.CrashLog; import datadog.crashtracking.dto.ErrorData; +import datadog.crashtracking.dto.Experimental; import datadog.crashtracking.dto.Metadata; import datadog.crashtracking.dto.OSInfo; import datadog.crashtracking.dto.ProcInfo; @@ -21,8 +22,10 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -45,6 +48,7 @@ enum State { SUMMARY, THREAD, STACKTRACE, + REGISTERS, SEEK_DYNAMIC_LIBRARIES, DYNAMIC_LIBRARIES, DONE @@ -65,6 +69,9 @@ public HotspotCrashLogParser() { "siginfo:\\s+si_signo:\\s+(\\d+)\\s+\\((\\w+)\\),\\s+si_code:\\s+(\\d+)\\s+\\(([^)]+)\\),\\s+si_addr:\\s+(0x[0-9a-fA-F]+)"); private static final Pattern DYNAMIC_LIBS_PATH_PARSER = Pattern.compile("^(?:0x)?[0-9a-fA-F]+(?:-[0-9a-fA-F]+)?\\s+(?:[^\\s/\\[]+\\s+)*(.*)$"); + // Matches register entries like: RAX=0x..., R8 =0x..., TRAPNO=0x... + private static final Pattern REGISTER_ENTRY_PARSER = + Pattern.compile("([A-Z0-9]+)\\s*=\\s*(0x[0-9a-fA-F]+)"); private StackFrame parseLine(String line) { if (line == null || line.isEmpty()) { @@ -84,10 +91,10 @@ private StackFrame parseLine(String line) { switch (firstChar) { case 'J': { - // J 36572 c2 datadog.trace.util.AgentTaskScheduler$PeriodicTask.run()V (25 bytes) @ - // 0x00007f2fd0198488 [0x00007f2fd0198420+0x0000000000000068] - // J 3896 c2 java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer; java.base@21.0.1 (20 - // bytes) @ 0x0000000112ad51e8 [0x0000000112ad4fc0+0x0000000000000228] + // spotless:off + // J 36572 c2 datadog.trace.util.AgentTaskScheduler$PeriodicTask.run()V (25 bytes) @ 0x00007f2fd0198488 [0x00007f2fd0198420+0x0000000000000068] + // J 3896 c2 java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer; java.base@21.0.1 (20 bytes) @ 0x0000000112ad51e8 [0x0000000112ad4fc0+0x0000000000000228] + // spotless:on String[] parts = SPACE_SPLITTER.split(line); if (parts.length > 3) { functionName = parts[3]; @@ -221,6 +228,7 @@ public CrashLog parse(String uuid, String crashLog) { String datetime = null; boolean incomplete = false; String oomMessage = null; + Map registers = null; String[] lines = NEWLINE_SPLITTER.split(crashLog); outer: @@ -275,8 +283,9 @@ public CrashLog parse(String uuid, String crashLog) { break; case STACKTRACE: if (line.startsWith("siginfo:")) { - // siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: - // 0x0000000000000070 + // spotless:off + // siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000070 + // spotless:on final Matcher siginfoMatcher = SIGINFO_PARSER.matcher(line); if (siginfoMatcher.matches()) { Integer number = safelyParseInt(siginfoMatcher.group(1)); @@ -286,6 +295,9 @@ public CrashLog parse(String uuid, String crashLog) { String address = siginfoMatcher.group(5); sigInfo = new SigInfo(number, name, siCode, sigAction, address); } + } else if (line.startsWith("Registers:")) { + registers = new LinkedHashMap<>(); + state = State.REGISTERS; } else if (line.contains("P R O C E S S")) { state = State.SEEK_DYNAMIC_LIBRARIES; } else { @@ -296,6 +308,18 @@ public CrashLog parse(String uuid, String crashLog) { } } break; + case REGISTERS: + if (!line.isEmpty() && !REGISTER_ENTRY_PARSER.matcher(line).find()) { + // non-empty line with no register entries signals end of section; reprocess in + // STACKTRACE + state = State.STACKTRACE; + } else { + final Matcher m = REGISTER_ENTRY_PARSER.matcher(line); + while (m.find()) { + registers.put(m.group(1), m.group(2)); + } + } + break; case SEEK_DYNAMIC_LIBRARIES: if (line.startsWith("Dynamic libraries:")) { state = State.DYNAMIC_LIBRARIES; @@ -382,8 +406,19 @@ public CrashLog parse(String uuid, String crashLog) { Metadata metadata = new Metadata("dd-trace-java", VersionInfo.VERSION, "java", null); Integer parsedPid = safelyParseInt(pid); ProcInfo procInfo = parsedPid != null ? new ProcInfo(parsedPid) : null; + Experimental experimental = + (registers != null && !registers.isEmpty()) ? new Experimental(registers) : null; return new CrashLog( - uuid, incomplete, datetime, error, metadata, OSInfo.current(), procInfo, sigInfo, "1.0"); + uuid, + incomplete, + datetime, + error, + metadata, + OSInfo.current(), + procInfo, + sigInfo, + "1.0", + experimental); } static String dateTimeToISO(String datetime) { diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.txt index 8f8821d5abf..ff14a4bf82e 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-2.txt @@ -1 +1 @@ -{"timestamp":"2024-09-20T13:19:06Z","ddsource":"crashtracker","error":{"is_crash":true,"type":"UNKNOWN","message":"Process terminated by signal UNKNOWN","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"__pthread_clockjoin_ex+0x255","path":"libpthread.so.0","relative_address":"0x9cd5"}]}}} +{"timestamp":"2024-09-20T13:19:06Z","ddsource":"crashtracker","error":{"is_crash":true,"type":"UNKNOWN","message":"Process terminated by signal UNKNOWN","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"__pthread_clockjoin_ex+0x255","path":"libpthread.so.0","relative_address":"0x9cd5"}]}},"experimental":{"ucontext":{"RAX":"0x00000000000000ca","RBX":"0x00000000000000ca","RCX":"0x00007f011ab1ccd7","RDX":"0x000000000008ca23","RSP":"0x00007ffeabf89710","RBP":"0x00007ffeabf897b8","RSI":"0x0000000000000000","RDI":"0x00007f01192129d0","R8":"0x0000000000000000","R9":"0x00007f0119212700","R10":"0x0000000000000000","R11":"0x0000000000000246","R12":"0x000000000008ca23","R13":"0x00007f01192129d0","R14":"0x00007ffeabf89840","R15":"0x00007f0119212700","RIP":"0x00007f011ab1ccd5","EFLAGS":"0x0000000000000246","CSGSFS":"0x002b000000000033","ERR":"0x0000000000000000","TRAPNO":"0x0000000000000000"}}} diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.txt index 479adac4ea4..70d42561274 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry.txt @@ -1 +1 @@ -{"timestamp":"2023-10-17T20:25:14+08:00","ddsource":"crashtracker","error":{"is_crash":true,"type":"SIGSEGV","message":"Process terminated by signal SIGSEGV","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"vframeStreamForte::forte_next()+0x797","path":"libjvm.so","relative_address":"0x6b7187"},{"function":"forte_fill_call_trace_given_top(JavaThread*, ASGCT_CallTrace*, int, frame) [clone .isra.22]+0x7bd","path":"libjvm.so","relative_address":"0x6b79ad"},{"function":"AsyncGetCallTrace+0x193","path":"libjvm.so","relative_address":"0x6b8123"},{"function":"Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int, StackContext*, bool*) [clone .isra.531]+0xd8","path":"libjavaProfiler.so","relative_address":"0x146c8"},{"function":"Profiler::recordSample(void*, unsigned long long, int, int, Event*)+0xa2d","path":"libjavaProfiler.so","relative_address":"0x1c18d"},{"function":"WallClock::sharedSignalHandler(int, siginfo_t*, void*)+0x148","path":"libjavaProfiler.so","relative_address":"0x1d128"},{"path":"libpthread.so.0","relative_address":"0x12cf0"},{"function":"JfrStackTrace::record_safe(JavaThread*, int)+0x5a9","path":"libjvm.so","relative_address":"0x85f9e9"},{"function":"JfrStackTraceRepository::record_for_leak_profiler(JavaThread*, int)+0x50","path":"libjvm.so","relative_address":"0x861650"},{"function":"ObjectSampler::sample(HeapWordImpl**, unsigned long, JavaThread*)+0x10a","path":"libjvm.so","relative_address":"0xb1ecba"},{"function":"JfrAllocationTracer::JfrAllocationTracer(Klass const*, HeapWordImpl**, unsigned long, bool, JavaThread*)+0x5e","path":"libjvm.so","relative_address":"0x81abee"},{"function":"AllocTracer::send_allocation_in_new_tlab(Klass*, HeapWordImpl**, unsigned long, unsigned long, JavaThread*)+0x30","path":"libjvm.so","relative_address":"0x3afa20"},{"function":"MemAllocator::allocate() const+0x13d","path":"libjvm.so","relative_address":"0xa8f8ed"},{"function":"InstanceKlass::allocate_objArray(int, int, JavaThread*)+0x13c","path":"libjvm.so","relative_address":"0x7e443c"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)+0x129","path":"libjvm.so","relative_address":"0xbe1b59"},{"function":"~RuntimeStub::_new_array_Java"},{"function":"java.util.HashMap.resize()[Ljava/util/HashMap$Node;"},{"function":"java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;"},{"function":"java.util.HashSet.add(Ljava/lang/Object;)Z"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.partToString(Lorg/w3c/dom/Node;)Ljava/lang/String;"},{"function":"com.REDACT_THIS.message.impl.MessagePartDOMExt.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"jdk.internal.reflect.GeneratedMethodAccessor173.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"},{"function":"java.io.ObjectOutputStream.writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"com.REDACT_THIS.message.impl.Message.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.ExternalizableConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.XStream.toXML(Ljava/lang/Object;Ljava/io/OutputStream;)V"},{"function":"com.REDACT_THIS.recover.impl.fs.FSJobSerializer.serializeJob(Ljava/lang/String;Lcom/REDACT_THIS/recover/impl/GenericRecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.db.RecoveryPoolDBImpl.specificSave(Lcom/REDACT_THIS/recover/spi/RecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.REDACT_THIS.saveJob(Lcom/REDACT_THIS/recover/spi/RecoveryJob;ILjava/lang/String;)V"},{"function":"com.REDACT_THIS.frame.core.FrameWorkListener.callbackNewData(Lcom/REDACT_THIS/frame/header/GenericTask;Ljava/util/concurrent/ExecutorService;)V"},{"function":"com.REDACT_THIS.frame.connection.direct.DirectModeMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"datadog.trace.instrumentation.jms.DatadogMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(Lorg/apache/activemq/artemis/api/core/client/ClientMessage;)V"},{"function":"org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run()V"},{"function":"org.apache.activemq.artemis.utils.actors.ProcessorBase$$Lambda$2929+0x00000007ce44f8f8.run()V"},{"function":"java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V"},{"function":"java.util.concurrent.ThreadPoolExecutor$Worker.run()V"},{"function":"org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run()V","line":44},{"function":"~StubRoutines::call_stub"}]}},"sig_info":{"si_addr":"0x0000000000000070","si_signo_human_readable":"SIGSEGV","si_signo":11}} +{"timestamp":"2023-10-17T20:25:14+08:00","ddsource":"crashtracker","error":{"is_crash":true,"type":"SIGSEGV","message":"Process terminated by signal SIGSEGV","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"vframeStreamForte::forte_next()+0x797","path":"libjvm.so","relative_address":"0x6b7187"},{"function":"forte_fill_call_trace_given_top(JavaThread*, ASGCT_CallTrace*, int, frame) [clone .isra.22]+0x7bd","path":"libjvm.so","relative_address":"0x6b79ad"},{"function":"AsyncGetCallTrace+0x193","path":"libjvm.so","relative_address":"0x6b8123"},{"function":"Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int, StackContext*, bool*) [clone .isra.531]+0xd8","path":"libjavaProfiler.so","relative_address":"0x146c8"},{"function":"Profiler::recordSample(void*, unsigned long long, int, int, Event*)+0xa2d","path":"libjavaProfiler.so","relative_address":"0x1c18d"},{"function":"WallClock::sharedSignalHandler(int, siginfo_t*, void*)+0x148","path":"libjavaProfiler.so","relative_address":"0x1d128"},{"path":"libpthread.so.0","relative_address":"0x12cf0"},{"function":"JfrStackTrace::record_safe(JavaThread*, int)+0x5a9","path":"libjvm.so","relative_address":"0x85f9e9"},{"function":"JfrStackTraceRepository::record_for_leak_profiler(JavaThread*, int)+0x50","path":"libjvm.so","relative_address":"0x861650"},{"function":"ObjectSampler::sample(HeapWordImpl**, unsigned long, JavaThread*)+0x10a","path":"libjvm.so","relative_address":"0xb1ecba"},{"function":"JfrAllocationTracer::JfrAllocationTracer(Klass const*, HeapWordImpl**, unsigned long, bool, JavaThread*)+0x5e","path":"libjvm.so","relative_address":"0x81abee"},{"function":"AllocTracer::send_allocation_in_new_tlab(Klass*, HeapWordImpl**, unsigned long, unsigned long, JavaThread*)+0x30","path":"libjvm.so","relative_address":"0x3afa20"},{"function":"MemAllocator::allocate() const+0x13d","path":"libjvm.so","relative_address":"0xa8f8ed"},{"function":"InstanceKlass::allocate_objArray(int, int, JavaThread*)+0x13c","path":"libjvm.so","relative_address":"0x7e443c"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)+0x129","path":"libjvm.so","relative_address":"0xbe1b59"},{"function":"~RuntimeStub::_new_array_Java"},{"function":"java.util.HashMap.resize()[Ljava/util/HashMap$Node;"},{"function":"java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;"},{"function":"java.util.HashSet.add(Ljava/lang/Object;)Z"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.partToString(Lorg/w3c/dom/Node;)Ljava/lang/String;"},{"function":"com.REDACT_THIS.message.impl.MessagePartDOMExt.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"jdk.internal.reflect.GeneratedMethodAccessor173.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"},{"function":"java.io.ObjectOutputStream.writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"com.REDACT_THIS.message.impl.Message.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.ExternalizableConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.XStream.toXML(Ljava/lang/Object;Ljava/io/OutputStream;)V"},{"function":"com.REDACT_THIS.recover.impl.fs.FSJobSerializer.serializeJob(Ljava/lang/String;Lcom/REDACT_THIS/recover/impl/GenericRecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.db.RecoveryPoolDBImpl.specificSave(Lcom/REDACT_THIS/recover/spi/RecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.REDACT_THIS.saveJob(Lcom/REDACT_THIS/recover/spi/RecoveryJob;ILjava/lang/String;)V"},{"function":"com.REDACT_THIS.frame.core.FrameWorkListener.callbackNewData(Lcom/REDACT_THIS/frame/header/GenericTask;Ljava/util/concurrent/ExecutorService;)V"},{"function":"com.REDACT_THIS.frame.connection.direct.DirectModeMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"datadog.trace.instrumentation.jms.DatadogMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(Lorg/apache/activemq/artemis/api/core/client/ClientMessage;)V"},{"function":"org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run()V"},{"function":"org.apache.activemq.artemis.utils.actors.ProcessorBase$$Lambda$2929+0x00000007ce44f8f8.run()V"},{"function":"java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V"},{"function":"java.util.concurrent.ThreadPoolExecutor$Worker.run()V"},{"function":"org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run()V","line":44},{"function":"~StubRoutines::call_stub"}]}},"sig_info":{"si_addr":"0x0000000000000070","si_signo_human_readable":"SIGSEGV","si_signo":11},"experimental":{"ucontext":{"RAX":"0x00007f36ccfbf170","RBX":"0x000000008fd66048","RCX":"0x0000000000000758","RDX":"0x0000000000000008","RSP":"0x00007f35e6253190","RBP":"0x00007f35e6253220","RSI":"0x00007f3639c2ff00","RDI":"0x0000000000000000","R8":"0x00007f37a16e2590","R9":"0x00007f37a16e25a0","R10":"0x00000000000008dd","R11":"0x00007f3744198b70","R12":"0x0000000000000000","R13":"0x00007f35e6254750","R14":"0x00007f3639c2ff00","R15":"0x00007f35e6253320","RIP":"0x00007f37a18bc187","EFLAGS":"0x0000000000010286","CSGSFS":"0x002b000000000033","ERR":"0x0000000000000004","TRAPNO":"0x000000000000000e"}}} diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.txt index 96e6b3e7471..63c9de482ce 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-2.txt @@ -1 +1 @@ - {"data_schema_version":"1.0","error":{"is_crash":true,"kind":"UNKNOWN","message":"Process terminated by signal UNKNOWN","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"__pthread_clockjoin_ex+0x255","path":"libpthread.so.0","relative_address":"0x9cd5"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.60.0-SNAPSHOT~cffe9c6085"},"os_info":{"architecture":"aarch64","bitness":"64","os_type":"Mac OS X","version":{"Semantic":[15,7,1]}},"proc_info":{"pid":576034},"timestamp":"2024-09-20T13:19:06Z","uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0} + {"data_schema_version":"1.0","error":{"is_crash":true,"kind":"UNKNOWN","message":"Process terminated by signal UNKNOWN","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"__pthread_clockjoin_ex+0x255","path":"libpthread.so.0","relative_address":"0x9cd5"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.60.0-SNAPSHOT~cffe9c6085"},"os_info":{"architecture":"aarch64","bitness":"64","os_type":"Mac OS X","version":{"Semantic":[15,7,1]}},"experimental":{"ucontext":{"RAX":"0x00000000000000ca","RBX":"0x00000000000000ca","RCX":"0x00007f011ab1ccd7","RDX":"0x000000000008ca23","RSP":"0x00007ffeabf89710","RBP":"0x00007ffeabf897b8","RSI":"0x0000000000000000","RDI":"0x00007f01192129d0","R8":"0x0000000000000000","R9":"0x00007f0119212700","R10":"0x0000000000000000","R11":"0x0000000000000246","R12":"0x000000000008ca23","R13":"0x00007f01192129d0","R14":"0x00007ffeabf89840","R15":"0x00007f0119212700","RIP":"0x00007f011ab1ccd5","EFLAGS":"0x0000000000000246","CSGSFS":"0x002b000000000033","ERR":"0x0000000000000000","TRAPNO":"0x0000000000000000"}},"proc_info":{"pid":576034},"timestamp":"2024-09-20T13:19:06Z","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.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.txt index daa814cf60e..1e3752651a6 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry.txt @@ -1 +1 @@ -{"data_schema_version":"1.0","error":{"is_crash":true,"kind":"SIGSEGV","message":"Process terminated by signal SIGSEGV","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"vframeStreamForte::forte_next()+0x797","path":"libjvm.so","relative_address":"0x6b7187"},{"function":"forte_fill_call_trace_given_top(JavaThread*, ASGCT_CallTrace*, int, frame) [clone .isra.22]+0x7bd","path":"libjvm.so","relative_address":"0x6b79ad"},{"function":"AsyncGetCallTrace+0x193","path":"libjvm.so","relative_address":"0x6b8123"},{"function":"Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int, StackContext*, bool*) [clone .isra.531]+0xd8","path":"libjavaProfiler.so","relative_address":"0x146c8"},{"function":"Profiler::recordSample(void*, unsigned long long, int, int, Event*)+0xa2d","path":"libjavaProfiler.so","relative_address":"0x1c18d"},{"function":"WallClock::sharedSignalHandler(int, siginfo_t*, void*)+0x148","path":"libjavaProfiler.so","relative_address":"0x1d128"},{"path":"libpthread.so.0","relative_address":"0x12cf0"},{"function":"JfrStackTrace::record_safe(JavaThread*, int)+0x5a9","path":"libjvm.so","relative_address":"0x85f9e9"},{"function":"JfrStackTraceRepository::record_for_leak_profiler(JavaThread*, int)+0x50","path":"libjvm.so","relative_address":"0x861650"},{"function":"ObjectSampler::sample(HeapWordImpl**, unsigned long, JavaThread*)+0x10a","path":"libjvm.so","relative_address":"0xb1ecba"},{"function":"JfrAllocationTracer::JfrAllocationTracer(Klass const*, HeapWordImpl**, unsigned long, bool, JavaThread*)+0x5e","path":"libjvm.so","relative_address":"0x81abee"},{"function":"AllocTracer::send_allocation_in_new_tlab(Klass*, HeapWordImpl**, unsigned long, unsigned long, JavaThread*)+0x30","path":"libjvm.so","relative_address":"0x3afa20"},{"function":"MemAllocator::allocate() const+0x13d","path":"libjvm.so","relative_address":"0xa8f8ed"},{"function":"InstanceKlass::allocate_objArray(int, int, JavaThread*)+0x13c","path":"libjvm.so","relative_address":"0x7e443c"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)+0x129","path":"libjvm.so","relative_address":"0xbe1b59"},{"function":"~RuntimeStub::_new_array_Java"},{"function":"java.util.HashMap.resize()[Ljava/util/HashMap$Node;"},{"function":"java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;"},{"function":"java.util.HashSet.add(Ljava/lang/Object;)Z"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.partToString(Lorg/w3c/dom/Node;)Ljava/lang/String;"},{"function":"com.REDACT_THIS.message.impl.MessagePartDOMExt.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"jdk.internal.reflect.GeneratedMethodAccessor173.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"},{"function":"java.io.ObjectOutputStream.writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"com.REDACT_THIS.message.impl.Message.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.ExternalizableConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.XStream.toXML(Ljava/lang/Object;Ljava/io/OutputStream;)V"},{"function":"com.REDACT_THIS.recover.impl.fs.FSJobSerializer.serializeJob(Ljava/lang/String;Lcom/REDACT_THIS/recover/impl/GenericRecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.db.RecoveryPoolDBImpl.specificSave(Lcom/REDACT_THIS/recover/spi/RecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.REDACT_THIS.saveJob(Lcom/REDACT_THIS/recover/spi/RecoveryJob;ILjava/lang/String;)V"},{"function":"com.REDACT_THIS.frame.core.FrameWorkListener.callbackNewData(Lcom/REDACT_THIS/frame/header/GenericTask;Ljava/util/concurrent/ExecutorService;)V"},{"function":"com.REDACT_THIS.frame.connection.direct.DirectModeMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"datadog.trace.instrumentation.jms.DatadogMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(Lorg/apache/activemq/artemis/api/core/client/ClientMessage;)V"},{"function":"org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run()V"},{"function":"org.apache.activemq.artemis.utils.actors.ProcessorBase$$Lambda$2929+0x00000007ce44f8f8.run()V"},{"function":"java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V"},{"function":"java.util.concurrent.ThreadPoolExecutor$Worker.run()V"},{"function":"org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run()V","line":44},{"function":"~StubRoutines::call_stub"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.60.0-SNAPSHOT~cffe9c6085"},"os_info":{"architecture":"aarch64","bitness":"64","os_type":"Mac OS X","version":{"Semantic":[15,7,1]}},"proc_info":{"pid":161958},"sig_info":{"si_addr":"0x0000000000000070","si_code":1,"si_code_human_readable":"SEGV_MAPERR","si_signo":11,"si_signo_human_readable":"SIGSEGV"},"timestamp":"2023-10-17T20:25:14+08:00","uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0} +{"data_schema_version":"1.0","error":{"is_crash":true,"kind":"SIGSEGV","message":"Process terminated by signal SIGSEGV","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"vframeStreamForte::forte_next()+0x797","path":"libjvm.so","relative_address":"0x6b7187"},{"function":"forte_fill_call_trace_given_top(JavaThread*, ASGCT_CallTrace*, int, frame) [clone .isra.22]+0x7bd","path":"libjvm.so","relative_address":"0x6b79ad"},{"function":"AsyncGetCallTrace+0x193","path":"libjvm.so","relative_address":"0x6b8123"},{"function":"Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int, StackContext*, bool*) [clone .isra.531]+0xd8","path":"libjavaProfiler.so","relative_address":"0x146c8"},{"function":"Profiler::recordSample(void*, unsigned long long, int, int, Event*)+0xa2d","path":"libjavaProfiler.so","relative_address":"0x1c18d"},{"function":"WallClock::sharedSignalHandler(int, siginfo_t*, void*)+0x148","path":"libjavaProfiler.so","relative_address":"0x1d128"},{"path":"libpthread.so.0","relative_address":"0x12cf0"},{"function":"JfrStackTrace::record_safe(JavaThread*, int)+0x5a9","path":"libjvm.so","relative_address":"0x85f9e9"},{"function":"JfrStackTraceRepository::record_for_leak_profiler(JavaThread*, int)+0x50","path":"libjvm.so","relative_address":"0x861650"},{"function":"ObjectSampler::sample(HeapWordImpl**, unsigned long, JavaThread*)+0x10a","path":"libjvm.so","relative_address":"0xb1ecba"},{"function":"JfrAllocationTracer::JfrAllocationTracer(Klass const*, HeapWordImpl**, unsigned long, bool, JavaThread*)+0x5e","path":"libjvm.so","relative_address":"0x81abee"},{"function":"AllocTracer::send_allocation_in_new_tlab(Klass*, HeapWordImpl**, unsigned long, unsigned long, JavaThread*)+0x30","path":"libjvm.so","relative_address":"0x3afa20"},{"function":"MemAllocator::allocate() const+0x13d","path":"libjvm.so","relative_address":"0xa8f8ed"},{"function":"InstanceKlass::allocate_objArray(int, int, JavaThread*)+0x13c","path":"libjvm.so","relative_address":"0x7e443c"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)+0x129","path":"libjvm.so","relative_address":"0xbe1b59"},{"function":"~RuntimeStub::_new_array_Java"},{"function":"java.util.HashMap.resize()[Ljava/util/HashMap$Node;"},{"function":"java.util.HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;"},{"function":"java.util.HashSet.add(Ljava/lang/Object;)Z"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.doTransform(Lorg/w3c/dom/Node;Ljava/io/PrintStream;IZZZZZ)V"},{"function":"com.REDACT_THIS.util.dom.DOMUtil.partToString(Lorg/w3c/dom/Node;)Ljava/lang/String;"},{"function":"com.REDACT_THIS.message.impl.MessagePartDOMExt.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"jdk.internal.reflect.GeneratedMethodAccessor173.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"},{"function":"java.io.ObjectOutputStream.writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V"},{"function":"java.io.ObjectOutputStream.writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V"},{"function":"java.io.ObjectOutputStream.writeObject0(Ljava/lang/Object;Z)V"},{"function":"com.REDACT_THIS.message.impl.Message.writeExternal(Ljava/io/ObjectOutput;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.ExternalizableConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshallField(Lcom/REDACT_THIS/xstream/converters/MarshallingContext;Ljava/lang/Object;Ljava/lang/reflect/Field;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.converters.reflection.AbstractReflectionConverter.marshal(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/io/HierarchicalStreamWriter;Lcom/REDACT_THIS/xstream/converters/MarshallingContext;)V"},{"function":"com.REDACT_THIS.xstream.core.TreeMarshaller.convertAnother(Ljava/lang/Object;Lcom/REDACT_THIS/xstream/converters/Converter;)V"},{"function":"com.REDACT_THIS.xstream.XStream.toXML(Ljava/lang/Object;Ljava/io/OutputStream;)V"},{"function":"com.REDACT_THIS.recover.impl.fs.FSJobSerializer.serializeJob(Ljava/lang/String;Lcom/REDACT_THIS/recover/impl/GenericRecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.db.RecoveryPoolDBImpl.specificSave(Lcom/REDACT_THIS/recover/spi/RecoveryJob;)V"},{"function":"com.REDACT_THIS.recover.impl.REDACT_THIS.saveJob(Lcom/REDACT_THIS/recover/spi/RecoveryJob;ILjava/lang/String;)V"},{"function":"com.REDACT_THIS.frame.core.FrameWorkListener.callbackNewData(Lcom/REDACT_THIS/frame/header/GenericTask;Ljava/util/concurrent/ExecutorService;)V"},{"function":"com.REDACT_THIS.frame.connection.direct.DirectModeMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"datadog.trace.instrumentation.jms.DatadogMessageListener.onMessage(Ljavax/jms/Message;)V"},{"function":"org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(Lorg/apache/activemq/artemis/api/core/client/ClientMessage;)V"},{"function":"org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run()V"},{"function":"org.apache.activemq.artemis.utils.actors.ProcessorBase$$Lambda$2929+0x00000007ce44f8f8.run()V"},{"function":"java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V"},{"function":"java.util.concurrent.ThreadPoolExecutor$Worker.run()V"},{"function":"org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run()V","line":44},{"function":"~StubRoutines::call_stub"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.60.0-SNAPSHOT~cffe9c6085"},"os_info":{"architecture":"aarch64","bitness":"64","os_type":"Mac OS X","version":{"Semantic":[15,7,1]}},"proc_info":{"pid":161958},"sig_info":{"si_addr":"0x0000000000000070","si_code":1,"si_code_human_readable":"SEGV_MAPERR","si_signo":11,"si_signo_human_readable":"SIGSEGV"},"experimental":{"ucontext":{"RAX":"0x00007f36ccfbf170","RBX":"0x000000008fd66048","RCX":"0x0000000000000758","RDX":"0x0000000000000008","RSP":"0x00007f35e6253190","RBP":"0x00007f35e6253220","RSI":"0x00007f3639c2ff00","RDI":"0x0000000000000000","R8":"0x00007f37a16e2590","R9":"0x00007f37a16e25a0","R10":"0x00000000000008dd","R11":"0x00007f3744198b70","R12":"0x0000000000000000","R13":"0x00007f35e6254750","R14":"0x00007f3639c2ff00","R15":"0x00007f35e6253320","RIP":"0x00007f37a18bc187","EFLAGS":"0x0000000000010286","CSGSFS":"0x002b000000000033","ERR":"0x0000000000000004","TRAPNO":"0x000000000000000e"}},"timestamp":"2023-10-17T20:25:14+08:00","uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0}