diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/Fingerprinter.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/Fingerprinter.java index 130f76b34b7..21435b14636 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/Fingerprinter.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/Fingerprinter.java @@ -32,12 +32,14 @@ public static String fingerprint(Throwable t, ClassNameFilter classNameFiltering String typeName = clazz.getTypeName(); digest.update(typeName.getBytes()); StackTraceElement[] stackTrace = t.getStackTrace(); - for (StackTraceElement stackTraceElement : stackTrace) { - String className = stackTraceElement.getClassName(); - if (classNameFiltering.isExcluded(className)) { - continue; + if (stackTrace != null) { + for (StackTraceElement stackTraceElement : stackTrace) { + String className = stackTraceElement.getClassName(); + if (classNameFiltering.isExcluded(className)) { + continue; + } + digest.update(stackTraceElement.toString().getBytes()); } - digest.update(stackTraceElement.toString().getBytes()); } return bytesToHex(digest.digest()); } diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/exception/FingerprinterTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/exception/FingerprinterTest.java index 2227a542dd4..8e677c68c32 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/exception/FingerprinterTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/exception/FingerprinterTest.java @@ -69,6 +69,20 @@ void emptyStacktrace() { Fingerprinter.fingerprint(new EmptyException("test"), classNameFiltering)); } + @Test + void nullStacktrace() { + assertEquals( + "35ae5d9aa4d7179a7d36838ca6266ea459a7cbb6ebc92afc24098bc85cad586", + Fingerprinter.fingerprint( + new RuntimeException("test") { + @Override + public StackTraceElement[] getStackTrace() { + return null; + } + }, + classNameFiltering)); + } + static class EmptyException extends Exception { public EmptyException(String message) { super(message, null, false, false);