From d600b71b0f931aef8226e55a6283b05b9d8fa663 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Fri, 6 Feb 2026 15:06:02 +0100 Subject: [PATCH] Preserve the function relative address when parsing a crash --- .../crashtracking/parsers/HotspotCrashLogParser.java | 12 ++++-------- .../errortracking/sample-crash-for-telemetry-2.txt | 2 +- .../errortracking/sample-crash-for-telemetry-3.txt | 2 +- .../errortracking/sample-crash-for-telemetry.txt | 2 +- .../resources/golden/errortracking/sample_oom.txt | 2 +- .../telemetry/sample-crash-for-telemetry-2.txt | 2 +- .../telemetry/sample-crash-for-telemetry-3.txt | 2 +- .../golden/telemetry/sample-crash-for-telemetry.txt | 2 +- .../test/resources/golden/telemetry/sample_oom.txt | 2 +- 9 files changed, 12 insertions(+), 16 deletions(-) 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 4a25ced3fcd..0a14d77f5ce 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 @@ -126,12 +126,9 @@ private StackFrame parseLine(String line) { } // Extract function name if present (after the bracket) + // Keep the relative address offset as part of the function name if (libend + 3 < line.length() && !line.endsWith("]")) { - int plusIdx = line.lastIndexOf('+'); - functionName = - plusIdx > libend - ? line.substring(libend + 3, plusIdx).trim() - : line.substring(libend + 3).trim(); + functionName = line.substring(libend + 3).trim(); } } } @@ -152,9 +149,8 @@ private StackFrame parseLine(String line) { remaining = remaining.substring(0, lastSpace).trim(); } } - // Check for + offset - int plusIdx = remaining.lastIndexOf('+'); - functionName = plusIdx > -1 ? remaining.substring(0, plusIdx).trim() : remaining; + // Keep the relative address offset as part of the function name + functionName = remaining; } break; } 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 27d3e1b665e..f83ce1ad476 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","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"}]}}} diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.txt index 791ff9408d2..e1987f0728e 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample-crash-for-telemetry-3.txt @@ -1 +1 @@ -{"ddsource":"crashtracker","error":{"is_crash":true,"type":"OutOfMemory","message":"Java heap space","source_type":"crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die()","path":"libjvm.dylib","relative_address":"0x565d30"},{"function":"report_vm_error(char const*, int, char const*, char const*)","path":"libjvm.dylib","relative_address":"0x1941a0"},{"function":"report_java_out_of_memory(char const*)","path":"libjvm.dylib","relative_address":"0x1943d8"},{"function":"CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*)","path":"libjvm.dylib","relative_address":"0x70430"},{"function":"TypeArrayKlass::allocate_common(int, bool, Thread*)","path":"libjvm.dylib","relative_address":"0x53eba8"},{"function":"InterpreterRuntime::newarray(JavaThread*, BasicType, int)","path":"libjvm.dylib","relative_address":"0x285b6c"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"},{"function":"JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)","path":"libjvm.dylib","relative_address":"0x28f86c"},{"function":"jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)","path":"libjvm.dylib","relative_address":"0x2d3b44"},{"function":"jni_CallStaticVoidMethod","path":"libjvm.dylib","relative_address":"0x2d7160"},{"function":"JavaMain","path":"java","relative_address":"0x6404"},{"function":"_pthread_start","path":"libsystem_pthread.dylib","relative_address":"0x6f94"},{"function":"thread_start","path":"libsystem_pthread.dylib","relative_address":"0x1d34"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"}]}}} +{"ddsource":"crashtracker","error":{"is_crash":true,"type":"OutOfMemory","message":"Java heap space","source_type":"crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die()+0x468","path":"libjvm.dylib","relative_address":"0x565d30"},{"function":"report_vm_error(char const*, int, char const*, char const*)+0x5c","path":"libjvm.dylib","relative_address":"0x1941a0"},{"function":"report_java_out_of_memory(char const*)+0xfc","path":"libjvm.dylib","relative_address":"0x1943d8"},{"function":"CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*)+0x128","path":"libjvm.dylib","relative_address":"0x70430"},{"function":"TypeArrayKlass::allocate_common(int, bool, Thread*)+0xfc","path":"libjvm.dylib","relative_address":"0x53eba8"},{"function":"InterpreterRuntime::newarray(JavaThread*, BasicType, int)+0x48","path":"libjvm.dylib","relative_address":"0x285b6c"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"},{"function":"JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x840","path":"libjvm.dylib","relative_address":"0x28f86c"},{"function":"jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x294","path":"libjvm.dylib","relative_address":"0x2d3b44"},{"function":"jni_CallStaticVoidMethod+0x188","path":"libjvm.dylib","relative_address":"0x2d7160"},{"function":"JavaMain+0xa10","path":"java","relative_address":"0x6404"},{"function":"_pthread_start+0x88","path":"libsystem_pthread.dylib","relative_address":"0x6f94"},{"function":"thread_start+0x8","path":"libsystem_pthread.dylib","relative_address":"0x1d34"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"}]}}} 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 8503e816fa8..a3f6f7b0fdc 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()","path":"libjvm.so","relative_address":"0x6b7187"},{"function":"forte_fill_call_trace_given_top(JavaThread*, ASGCT_CallTrace*, int, frame)","path":"libjvm.so","relative_address":"0x6b79ad"},{"function":"AsyncGetCallTrace","path":"libjvm.so","relative_address":"0x6b8123"},{"function":"Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int, StackContext*, bool*)","path":"libjavaProfiler.so","relative_address":"0x146c8"},{"function":"Profiler::recordSample(void*, unsigned long long, int, int, Event*)","path":"libjavaProfiler.so","relative_address":"0x1c18d"},{"function":"WallClock::sharedSignalHandler(int, siginfo_t*, void*)","path":"libjavaProfiler.so","relative_address":"0x1d128"},{"path":"libpthread.so.0","relative_address":"0x12cf0"},{"function":"JfrStackTrace::record_safe(JavaThread*, int)","path":"libjvm.so","relative_address":"0x85f9e9"},{"function":"JfrStackTraceRepository::record_for_leak_profiler(JavaThread*, int)","path":"libjvm.so","relative_address":"0x861650"},{"function":"ObjectSampler::sample(HeapWordImpl**, unsigned long, JavaThread*)","path":"libjvm.so","relative_address":"0xb1ecba"},{"function":"JfrAllocationTracer::JfrAllocationTracer(Klass const*, HeapWordImpl**, unsigned long, bool, JavaThread*)","path":"libjvm.so","relative_address":"0x81abee"},{"function":"AllocTracer::send_allocation_in_new_tlab(Klass*, HeapWordImpl**, unsigned long, unsigned long, JavaThread*)","path":"libjvm.so","relative_address":"0x3afa20"},{"function":"MemAllocator::allocate() const","path":"libjvm.so","relative_address":"0xa8f8ed"},{"function":"InstanceKlass::allocate_objArray(int, int, JavaThread*)","path":"libjvm.so","relative_address":"0x7e443c"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)","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}} diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.txt index 6771b6c2f23..472c0008f08 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/errortracking/sample_oom.txt @@ -1 +1 @@ -{"timestamp":"2025-11-24T09:43:29+01:00","ddsource":"crashtracker","error":{"is_crash":true,"type":"OutOfMemory","message":"Java heap space","source_type":"crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)","path":"libjvm.dylib","relative_address":"0xaa5f24"},{"function":"report_fatal(VMErrorType, char const*, int, char const*, ...)","path":"libjvm.dylib","relative_address":"0x314c74"},{"function":"report_java_out_of_memory(char const*)","path":"libjvm.dylib","relative_address":"0x315248"},{"function":"MemAllocator::Allocation::check_out_of_memory()","path":"libjvm.dylib","relative_address":"0x7d9764"},{"function":"MemAllocator::allocate() const","path":"libjvm.dylib","relative_address":"0x7da2f4"},{"function":"CollectedHeap::array_allocate(Klass*, unsigned long, int, bool, JavaThread*)","path":"libjvm.dylib","relative_address":"0x2c3de4"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)","path":"libjvm.dylib","relative_address":"0x8ea9ec"},{"function":"~RuntimeStub::_new_array_Java","relative_address":"0x00000001124cb638"},{"function":"java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;"},{"function":"datadog.communication.serialization.FlushingBuffer.(ILdatadog/communication/serialization/ByteBufferConsumer;)V","line":6},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.selectMapper()V","line":126},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.addTrace(Ljava/util/List;)V","line":1},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.onEvent(Ljava/lang/Object;)V","line":22},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.consumeFromPrimaryQueue()V","line":21},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.runDutyCycle()V","line":12},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.run()V","line":1},{"function":"java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V"},{"function":"java.lang.Thread.run()V"},{"function":"~StubRoutines::call_stub","relative_address":"0x00000001123b0140"}]}}} ==> expected: <{data_schema_version=1.0, error={is_crash=true, kind=OutOfMemory, message=Java heap space, source_type=Crashtracking, stack={format=CrashTrackerV1, frames=[{function=VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long), path=libjvm.dylib, relative_address=0xaa5f24}, {function=report_fatal(VMErrorType, char const*, int, char const*, ...), path=libjvm.dylib, relative_address=0x314c74}, {function=report_java_out_of_memory(char const*), path=libjvm.dylib, relative_address=0x315248}, {function=MemAllocator::Allocation::check_out_of_memory(), path=libjvm.dylib, relative_address=0x7d9764}, {function=MemAllocator::allocate() const, path=libjvm.dylib, relative_address=0x7da2f4}, {function=CollectedHeap::array_allocate(Klass*, unsigned long, int, bool, JavaThread*), path=libjvm.dylib, relative_address=0x2c3de4}, {function=OptoRuntime::new_array_C(Klass*, int, JavaThread*), path=libjvm.dylib, relative_address=0x8ea9ec}, {function=~RuntimeStub::_new_array_Java, relative_address=0x00000001124cb638}, {function=java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;}, {function=datadog.communication.serialization.FlushingBuffer.(ILdatadog/communication/serialization/ByteBufferConsumer;)V, line=6}, {function=datadog.trace.agent.common.writer.PayloadDispatcherImpl.selectMapper()V, line=126}, {function=datadog.trace.agent.common.writer.PayloadDispatcherImpl.addTrace(Ljava/util/List;)V, line=1}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.onEvent(Ljava/lang/Object;)V, line=22}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.consumeFromPrimaryQueue()V, line=21}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.runDutyCycle()V, line=12}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.run()V, line=1}, {function=java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V}, {function=java.lang.Thread.run()V}, {function=~StubRoutines::call_stub, relative_address=0x00000001123b0140}]}}, incomplete=false, metadata={family=java, library_name=dd-trace-java, library_version=1.59.0-SNAPSHOT~896c1ad986}, proc_info={pid=74045}, timestamp=2025-11-24T09:43:29+01:00, uuid=a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3, version_id=0}> but was: <{timestamp=2025-11-24T09:43:29+01:00, ddsource=crashtracker, error={is_crash=true, type=OutOfMemory, message=Java heap space, source_type=crashtracking, stack={format=CrashTrackerV1, frames=[{function=VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long), path=libjvm.dylib, relative_address=0xaa5f24}, {function=report_fatal(VMErrorType, char const*, int, char const*, ...), path=libjvm.dylib, relative_address=0x314c74}, {function=report_java_out_of_memory(char const*), path=libjvm.dylib, relative_address=0x315248}, {function=MemAllocator::Allocation::check_out_of_memory(), path=libjvm.dylib, relative_address=0x7d9764}, {function=MemAllocator::allocate() const, path=libjvm.dylib, relative_address=0x7da2f4}, {function=CollectedHeap::array_allocate(Klass*, unsigned long, int, bool, JavaThread*), path=libjvm.dylib, relative_address=0x2c3de4}, {function=OptoRuntime::new_array_C(Klass*, int, JavaThread*), path=libjvm.dylib, relative_address=0x8ea9ec}, {function=~RuntimeStub::_new_array_Java, relative_address=0x00000001124cb638}, {function=java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;}, {function=datadog.communication.serialization.FlushingBuffer.(ILdatadog/communication/serialization/ByteBufferConsumer;)V, line=6}, {function=datadog.trace.agent.common.writer.PayloadDispatcherImpl.selectMapper()V, line=126}, {function=datadog.trace.agent.common.writer.PayloadDispatcherImpl.addTrace(Ljava/util/List;)V, line=1}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.onEvent(Ljava/lang/Object;)V, line=22}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.consumeFromPrimaryQueue()V, line=21}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.runDutyCycle()V, line=12}, {function=datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.run()V, line=1}, {function=java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V}, {function=java.lang.Thread.run()V}, {function=~StubRoutines::call_stub, relative_address=0x00000001123b0140}]}}} +{"timestamp":"2025-11-24T09:43:29+01:00","ddsource":"crashtracker","error":{"is_crash":true,"type":"OutOfMemory","message":"Java heap space","source_type":"crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x480 (debug.cpp:271)","path":"libjvm.dylib","relative_address":"0xaa5f24"},{"function":"report_fatal(VMErrorType, char const*, int, char const*, ...)+0x88","path":"libjvm.dylib","relative_address":"0x314c74"},{"function":"report_java_out_of_memory(char const*)+0xd8","path":"libjvm.dylib","relative_address":"0x315248"},{"function":"MemAllocator::Allocation::check_out_of_memory()+0x8c","path":"libjvm.dylib","relative_address":"0x7d9764"},{"function":"MemAllocator::allocate() const+0xf4","path":"libjvm.dylib","relative_address":"0x7da2f4"},{"function":"CollectedHeap::array_allocate(Klass*, unsigned long, int, bool, JavaThread*)+0x34","path":"libjvm.dylib","relative_address":"0x2c3de4"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)+0x68","path":"libjvm.dylib","relative_address":"0x8ea9ec"},{"function":"~RuntimeStub::_new_array_Java","relative_address":"0x00000001124cb638"},{"function":"java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;"},{"function":"datadog.communication.serialization.FlushingBuffer.(ILdatadog/communication/serialization/ByteBufferConsumer;)V","line":6},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.selectMapper()V","line":126},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.addTrace(Ljava/util/List;)V","line":1},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.onEvent(Ljava/lang/Object;)V","line":22},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.consumeFromPrimaryQueue()V","line":21},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.runDutyCycle()V","line":12},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.run()V","line":1},{"function":"java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V"},{"function":"java.lang.Thread.run()V"},{"function":"~StubRoutines::call_stub","relative_address":"0x00000001123b0140"}]}}} 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 d2340d9dd3e..96e6b3e7471 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","path":"libpthread.so.0","relative_address":"0x9cd5"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.59.0-SNAPSHOT~896c1ad986"},"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]}},"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-3.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.txt index fb6695894b0..fe7e17459cc 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample-crash-for-telemetry-3.txt @@ -1 +1 @@ -{"data_schema_version":"1.0","error":{"is_crash":true,"kind":"OutOfMemory","message":"Java heap space","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die()","path":"libjvm.dylib","relative_address":"0x565d30"},{"function":"report_vm_error(char const*, int, char const*, char const*)","path":"libjvm.dylib","relative_address":"0x1941a0"},{"function":"report_java_out_of_memory(char const*)","path":"libjvm.dylib","relative_address":"0x1943d8"},{"function":"CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*)","path":"libjvm.dylib","relative_address":"0x70430"},{"function":"TypeArrayKlass::allocate_common(int, bool, Thread*)","path":"libjvm.dylib","relative_address":"0x53eba8"},{"function":"InterpreterRuntime::newarray(JavaThread*, BasicType, int)","path":"libjvm.dylib","relative_address":"0x285b6c"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"},{"function":"JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)","path":"libjvm.dylib","relative_address":"0x28f86c"},{"function":"jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)","path":"libjvm.dylib","relative_address":"0x2d3b44"},{"function":"jni_CallStaticVoidMethod","path":"libjvm.dylib","relative_address":"0x2d7160"},{"function":"JavaMain","path":"java","relative_address":"0x6404"},{"function":"_pthread_start","path":"libsystem_pthread.dylib","relative_address":"0x6f94"},{"function":"thread_start","path":"libsystem_pthread.dylib","relative_address":"0x1d34"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.59.0-SNAPSHOT~896c1ad986"},"os_info":{"architecture":"aarch64","bitness":"64","os_type":"Mac OS X","version":{"Semantic":[15,7,1]}},"proc_info":{"pid":96267},"uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0} +{"data_schema_version":"1.0","error":{"is_crash":true,"kind":"OutOfMemory","message":"Java heap space","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die()+0x468","path":"libjvm.dylib","relative_address":"0x565d30"},{"function":"report_vm_error(char const*, int, char const*, char const*)+0x5c","path":"libjvm.dylib","relative_address":"0x1941a0"},{"function":"report_java_out_of_memory(char const*)+0xfc","path":"libjvm.dylib","relative_address":"0x1943d8"},{"function":"CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*)+0x128","path":"libjvm.dylib","relative_address":"0x70430"},{"function":"TypeArrayKlass::allocate_common(int, bool, Thread*)+0xfc","path":"libjvm.dylib","relative_address":"0x53eba8"},{"function":"InterpreterRuntime::newarray(JavaThread*, BasicType, int)+0x48","path":"libjvm.dylib","relative_address":"0x285b6c"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"function":"~StubRoutines::call_stub"},{"function":"JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x840","path":"libjvm.dylib","relative_address":"0x28f86c"},{"function":"jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x294","path":"libjvm.dylib","relative_address":"0x2d3b44"},{"function":"jni_CallStaticVoidMethod+0x188","path":"libjvm.dylib","relative_address":"0x2d7160"},{"function":"JavaMain+0xa10","path":"java","relative_address":"0x6404"},{"function":"_pthread_start+0x88","path":"libsystem_pthread.dylib","relative_address":"0x6f94"},{"function":"thread_start+0x8","path":"libsystem_pthread.dylib","relative_address":"0x1d34"},{"function":"datadog.smoketest.crashtracking.CrashtrackingTestApplication.main([Ljava/lang/String;)V","line":105},{"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":96267},"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 eae4c373e8b..daa814cf60e 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()","path":"libjvm.so","relative_address":"0x6b7187"},{"function":"forte_fill_call_trace_given_top(JavaThread*, ASGCT_CallTrace*, int, frame)","path":"libjvm.so","relative_address":"0x6b79ad"},{"function":"AsyncGetCallTrace","path":"libjvm.so","relative_address":"0x6b8123"},{"function":"Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int, StackContext*, bool*)","path":"libjavaProfiler.so","relative_address":"0x146c8"},{"function":"Profiler::recordSample(void*, unsigned long long, int, int, Event*)","path":"libjavaProfiler.so","relative_address":"0x1c18d"},{"function":"WallClock::sharedSignalHandler(int, siginfo_t*, void*)","path":"libjavaProfiler.so","relative_address":"0x1d128"},{"path":"libpthread.so.0","relative_address":"0x12cf0"},{"function":"JfrStackTrace::record_safe(JavaThread*, int)","path":"libjvm.so","relative_address":"0x85f9e9"},{"function":"JfrStackTraceRepository::record_for_leak_profiler(JavaThread*, int)","path":"libjvm.so","relative_address":"0x861650"},{"function":"ObjectSampler::sample(HeapWordImpl**, unsigned long, JavaThread*)","path":"libjvm.so","relative_address":"0xb1ecba"},{"function":"JfrAllocationTracer::JfrAllocationTracer(Klass const*, HeapWordImpl**, unsigned long, bool, JavaThread*)","path":"libjvm.so","relative_address":"0x81abee"},{"function":"AllocTracer::send_allocation_in_new_tlab(Klass*, HeapWordImpl**, unsigned long, unsigned long, JavaThread*)","path":"libjvm.so","relative_address":"0x3afa20"},{"function":"MemAllocator::allocate() const","path":"libjvm.so","relative_address":"0xa8f8ed"},{"function":"InstanceKlass::allocate_objArray(int, int, JavaThread*)","path":"libjvm.so","relative_address":"0x7e443c"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)","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.59.0-SNAPSHOT~896c1ad986"},"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"},"timestamp":"2023-10-17T20:25:14+08:00","uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0} diff --git a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.txt b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.txt index acc570a28d9..14b4204ef02 100644 --- a/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.txt +++ b/dd-java-agent/agent-crashtracking/src/test/resources/golden/telemetry/sample_oom.txt @@ -1 +1 @@ -{"data_schema_version":"1.0","error":{"is_crash":true,"kind":"OutOfMemory","message":"Java heap space","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)","path":"libjvm.dylib","relative_address":"0xaa5f24"},{"function":"report_fatal(VMErrorType, char const*, int, char const*, ...)","path":"libjvm.dylib","relative_address":"0x314c74"},{"function":"report_java_out_of_memory(char const*)","path":"libjvm.dylib","relative_address":"0x315248"},{"function":"MemAllocator::Allocation::check_out_of_memory()","path":"libjvm.dylib","relative_address":"0x7d9764"},{"function":"MemAllocator::allocate() const","path":"libjvm.dylib","relative_address":"0x7da2f4"},{"function":"CollectedHeap::array_allocate(Klass*, unsigned long, int, bool, JavaThread*)","path":"libjvm.dylib","relative_address":"0x2c3de4"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)","path":"libjvm.dylib","relative_address":"0x8ea9ec"},{"function":"~RuntimeStub::_new_array_Java","relative_address":"0x00000001124cb638"},{"function":"java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;"},{"function":"datadog.communication.serialization.FlushingBuffer.(ILdatadog/communication/serialization/ByteBufferConsumer;)V","line":6},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.selectMapper()V","line":126},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.addTrace(Ljava/util/List;)V","line":1},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.onEvent(Ljava/lang/Object;)V","line":22},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.consumeFromPrimaryQueue()V","line":21},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.runDutyCycle()V","line":12},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.run()V","line":1},{"function":"java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V"},{"function":"java.lang.Thread.run()V"},{"function":"~StubRoutines::call_stub","relative_address":"0x00000001123b0140"}]}},"incomplete":false,"metadata":{"family":"java","library_name":"dd-trace-java","library_version":"1.59.0-SNAPSHOT~896c1ad986"},"os_info":{"architecture":"aarch64","bitness":"64","os_type":"Mac OS X","version":{"Semantic":[15,7,1]}},"proc_info":{"pid":74045},"timestamp":"2025-11-24T09:43:29+01:00","uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0} +{"data_schema_version":"1.0","error":{"is_crash":true,"kind":"OutOfMemory","message":"Java heap space","source_type":"Crashtracking","stack":{"format":"CrashTrackerV1","frames":[{"function":"VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x480 (debug.cpp:271)","path":"libjvm.dylib","relative_address":"0xaa5f24"},{"function":"report_fatal(VMErrorType, char const*, int, char const*, ...)+0x88","path":"libjvm.dylib","relative_address":"0x314c74"},{"function":"report_java_out_of_memory(char const*)+0xd8","path":"libjvm.dylib","relative_address":"0x315248"},{"function":"MemAllocator::Allocation::check_out_of_memory()+0x8c","path":"libjvm.dylib","relative_address":"0x7d9764"},{"function":"MemAllocator::allocate() const+0xf4","path":"libjvm.dylib","relative_address":"0x7da2f4"},{"function":"CollectedHeap::array_allocate(Klass*, unsigned long, int, bool, JavaThread*)+0x34","path":"libjvm.dylib","relative_address":"0x2c3de4"},{"function":"OptoRuntime::new_array_C(Klass*, int, JavaThread*)+0x68","path":"libjvm.dylib","relative_address":"0x8ea9ec"},{"function":"~RuntimeStub::_new_array_Java","relative_address":"0x00000001124cb638"},{"function":"java.nio.ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;"},{"function":"datadog.communication.serialization.FlushingBuffer.(ILdatadog/communication/serialization/ByteBufferConsumer;)V","line":6},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.selectMapper()V","line":126},{"function":"datadog.trace.agent.common.writer.PayloadDispatcherImpl.addTrace(Ljava/util/List;)V","line":1},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.onEvent(Ljava/lang/Object;)V","line":22},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.consumeFromPrimaryQueue()V","line":21},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.runDutyCycle()V","line":12},{"function":"datadog.trace.agent.common.writer.TraceProcessingWorker$TraceSerializingHandler.run()V","line":1},{"function":"java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V"},{"function":"java.lang.Thread.run()V"},{"function":"~StubRoutines::call_stub","relative_address":"0x00000001123b0140"}]}},"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":74045},"timestamp":"2025-11-24T09:43:29+01:00","uuid":"a4194cd6-8cb3-45fd-9bd9-3af83e0a3ad3","version_id":0}