Skip to content

Commit 7d78c7c

Browse files
Merge branch 'master' into ci/update-gradle-dependencies-instrumentation-20260322
2 parents 461c70a + cc36e4c commit 7d78c7c

16 files changed

Lines changed: 54 additions & 20 deletions

File tree

dd-trace-core/src/main/java/datadog/trace/common/writer/ddagent/Caching.java renamed to communication/src/main/java/datadog/communication/serialization/Caching.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.common.writer.ddagent;
1+
package datadog.communication.serialization;
22

33
import java.util.Arrays;
44

dd-trace-core/src/main/java/datadog/trace/common/writer/ddagent/GenerationalUtf8Cache.java renamed to communication/src/main/java/datadog/communication/serialization/GenerationalUtf8Cache.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package datadog.trace.common.writer.ddagent;
1+
package datadog.communication.serialization;
22

3-
import datadog.communication.serialization.EncodingCache;
43
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
54
import java.nio.charset.StandardCharsets;
65

dd-trace-core/src/main/java/datadog/trace/common/writer/ddagent/SimpleUtf8Cache.java renamed to communication/src/main/java/datadog/communication/serialization/SimpleUtf8Cache.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package datadog.trace.common.writer.ddagent;
1+
package datadog.communication.serialization;
22

3-
import datadog.communication.serialization.EncodingCache;
43
import java.nio.charset.StandardCharsets;
54

65
/**

dd-trace-core/src/test/java/datadog/trace/common/writer/ddagent/CachingTest.java renamed to communication/src/test/java/datadog/communication/serialization/CachingTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.common.writer.ddagent;
1+
package datadog.communication.serialization;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertFalse;

dd-trace-core/src/test/java/datadog/trace/common/writer/ddagent/GenerationalUtf8CacheTest.java renamed to communication/src/test/java/datadog/communication/serialization/GenerationalUtf8CacheTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.common.writer.ddagent;
1+
package datadog.communication.serialization;
22

33
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
44
import static org.junit.jupiter.api.Assertions.assertEquals;

dd-trace-core/src/test/java/datadog/trace/common/writer/ddagent/SimpleUtf8CacheTest.java renamed to communication/src/test/java/datadog/communication/serialization/SimpleUtf8CacheTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.common.writer.ddagent;
1+
package datadog.communication.serialization;
22

33
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
44
import static org.junit.jupiter.api.Assertions.assertEquals;

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,16 @@ private RequestBody makeErrorTrackingRequestBody(@Nonnull CrashLog payload, bool
544544
writer.name("si_signo_human_readable").value(payload.sigInfo.name);
545545
writer.name("si_signo").value(payload.sigInfo.number);
546546
}
547+
if (payload.sigInfo.action != null) {
548+
writer.name("si_code").value(payload.sigInfo.code);
549+
writer.name("si_code_human_readable").value(payload.sigInfo.action);
550+
}
551+
if (payload.sigInfo.pid != null) {
552+
writer.name("si_pid").value(payload.sigInfo.pid);
553+
}
554+
if (payload.sigInfo.uid != null) {
555+
writer.name("si_uid").value(payload.sigInfo.uid);
556+
}
547557
writer.endObject();
548558
}
549559

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/dto/SigInfo.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,27 @@ public class SigInfo {
1919
@Json(name = "si_addr")
2020
public final String address;
2121

22-
public SigInfo(Integer number, String name, Integer code, String action, String address) {
22+
@Json(name = "si_pid")
23+
public final Integer pid;
24+
25+
@Json(name = "si_uid")
26+
public final Integer uid;
27+
28+
public SigInfo(
29+
Integer number,
30+
String name,
31+
Integer code,
32+
String action,
33+
String address,
34+
Integer pid,
35+
Integer uid) {
2336
this.number = number;
2437
this.name = name;
2538
this.address = address;
2639
this.code = code;
2740
this.action = action;
41+
this.pid = pid;
42+
this.uid = uid;
2843
}
2944

3045
@Override
@@ -35,11 +50,13 @@ public boolean equals(Object o) {
3550
&& Objects.equals(name, sigInfo.name)
3651
&& Objects.equals(address, sigInfo.address)
3752
&& Objects.equals(code, sigInfo.code)
38-
&& Objects.equals(action, sigInfo.action);
53+
&& Objects.equals(action, sigInfo.action)
54+
&& Objects.equals(pid, sigInfo.pid)
55+
&& Objects.equals(uid, sigInfo.uid);
3956
}
4057

4158
@Override
4259
public int hashCode() {
43-
return Objects.hash(number, name, address, code, action);
60+
return Objects.hash(number, name, address, code, action, pid, uid);
4461
}
4562
}

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,12 @@ public HotspotCrashLogParser() {
6060
private static final Pattern SPACE_SPLITTER = Pattern.compile("\\s+");
6161
private static final Pattern NEWLINE_SPLITTER = Pattern.compile("\n");
6262
private static final Pattern SIGNAL_PARSER = Pattern.compile("\\s*(\\w+) \\((\\w+)\\).*");
63+
// Groups: 1=si_signo, 2=signal name, 3=si_code, 4=si_code name,
64+
// 5=si_addr (null for SI_USER), 6=si_pid (null for si_addr), 7=si_uid (null for si_addr)
6365
private static final Pattern SIGINFO_PARSER =
6466
Pattern.compile(
65-
"siginfo:\\s+si_signo:\\s+(\\d+)\\s+\\((\\w+)\\),\\s+si_code:\\s+(\\d+)\\s+\\(([^)]+)\\),\\s+si_addr:\\s+(0x[0-9a-fA-F]+)");
67+
"siginfo:\\s+si_signo:\\s+(\\d+)\\s+\\((\\w+)\\),\\s+si_code:\\s+(\\d+)\\s+\\(([^)]+)\\),\\s+"
68+
+ "(?:si_addr:\\s+(0x[0-9a-fA-F]+)|si_pid:\\s+(\\d+),\\s+si_uid:\\s+(\\d+))");
6669
private static final Pattern DYNAMIC_LIBS_PATH_PARSER =
6770
Pattern.compile("^(?:0x)?[0-9a-fA-F]+(?:-[0-9a-fA-F]+)?\\s+(?:[^\\s/\\[]+\\s+)*(.*)$");
6871

@@ -275,16 +278,18 @@ public CrashLog parse(String uuid, String crashLog) {
275278
break;
276279
case STACKTRACE:
277280
if (line.startsWith("siginfo:")) {
278-
// siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr:
279-
// 0x0000000000000070
281+
// siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x70
282+
// siginfo: si_signo: 11 (SIGSEGV), si_code: 0 (SI_USER), si_pid: 554848, si_uid: 1000
280283
final Matcher siginfoMatcher = SIGINFO_PARSER.matcher(line);
281284
if (siginfoMatcher.matches()) {
282285
Integer number = safelyParseInt(siginfoMatcher.group(1));
283286
String name = siginfoMatcher.group(2);
284287
Integer siCode = safelyParseInt(siginfoMatcher.group(3));
285288
String sigAction = siginfoMatcher.group(4);
286289
String address = siginfoMatcher.group(5);
287-
sigInfo = new SigInfo(number, name, siCode, sigAction, address);
290+
Integer siPid = safelyParseInt(siginfoMatcher.group(6));
291+
Integer siUid = safelyParseInt(siginfoMatcher.group(7));
292+
sigInfo = new SigInfo(number, name, siCode, sigAction, address, siPid, siUid);
288293
}
289294
} else if (line.contains("P R O C E S S")) {
290295
state = State.SEEK_DYNAMIC_LIBRARIES;

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/J9JavacoreParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ private SigInfo buildSigInfo(String eventType, String eventCode) {
330330
signalNumber = parseEventCode(eventCode);
331331
}
332332

333-
return new SigInfo(signalNumber, signalName, null, null, null);
333+
return new SigInfo(signalNumber, signalName, null, null, null, null, null);
334334
}
335335

336336
private int parseEventCode(String eventCode) {

0 commit comments

Comments
 (0)