Skip to content

Commit d25eaf6

Browse files
[mq] [skip ddci] working branch - merge 795e24b on top of master at cd5b227
{"baseBranch":"master","baseCommit":"cd5b227eb23408c3ad3f934e8d77cc99a2621658","createdAt":"2026-04-03T09:47:54.961396Z","headSha":"795e24bb3df31b785f2caf1aca57769f28c55b0f","id":"f580b752-857a-4b2d-a2bc-845f13db9b38","priority":"200","pullRequestNumber":"11049","queuedAt":"2026-04-03T09:47:54.959901Z","status":"STATUS_QUEUED"}
2 parents 7f03469 + 795e24b commit d25eaf6

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/Fingerprinter.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ public static String fingerprint(Throwable t, ClassNameFilter classNameFiltering
3232
String typeName = clazz.getTypeName();
3333
digest.update(typeName.getBytes());
3434
StackTraceElement[] stackTrace = t.getStackTrace();
35-
for (StackTraceElement stackTraceElement : stackTrace) {
36-
String className = stackTraceElement.getClassName();
37-
if (classNameFiltering.isExcluded(className)) {
38-
continue;
35+
if (stackTrace != null) {
36+
for (StackTraceElement stackTraceElement : stackTrace) {
37+
String className = stackTraceElement.getClassName();
38+
if (classNameFiltering.isExcluded(className)) {
39+
continue;
40+
}
41+
digest.update(stackTraceElement.toString().getBytes());
3942
}
40-
digest.update(stackTraceElement.toString().getBytes());
4143
}
4244
return bytesToHex(digest.digest());
4345
}

dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/exception/FingerprinterTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,20 @@ void emptyStacktrace() {
6969
Fingerprinter.fingerprint(new EmptyException("test"), classNameFiltering));
7070
}
7171

72+
@Test
73+
void nullStacktrace() {
74+
assertEquals(
75+
"35ae5d9aa4d7179a7d36838ca6266ea459a7cbb6ebc92afc24098bc85cad586",
76+
Fingerprinter.fingerprint(
77+
new RuntimeException("test") {
78+
@Override
79+
public StackTraceElement[] getStackTrace() {
80+
return null;
81+
}
82+
},
83+
classNameFiltering));
84+
}
85+
7286
static class EmptyException extends Exception {
7387
public EmptyException(String message) {
7488
super(message, null, false, false);

0 commit comments

Comments
 (0)