diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/AbstractExceptionDebugger.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/AbstractExceptionDebugger.java index eb8abc565de..e92f65ef223 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/AbstractExceptionDebugger.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/AbstractExceptionDebugger.java @@ -93,9 +93,12 @@ public void handleException(Throwable t, AgentSpan span) { Throwable throwable; int chainedExceptionIdx = 0; while ((throwable = chainedExceptions.pollFirst()) != null) { + StackTraceElement[] stackTrace = throwable.getStackTrace(); + if (stackTrace == null || stackTrace.length == 0) { + continue; + } ExceptionProbeManager.CreationResult creationResult = - exceptionProbeManager.createProbesForException( - throwable.getStackTrace(), chainedExceptionIdx); + exceptionProbeManager.createProbesForException(stackTrace, chainedExceptionIdx); if (creationResult.probesCreated > 0) { if (!applyConfigAsync) { applyExceptionConfiguration(fingerprint); diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/DefaultExceptionDebugger.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/DefaultExceptionDebugger.java index e2921f490bd..601fca62d52 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/DefaultExceptionDebugger.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/exception/DefaultExceptionDebugger.java @@ -54,7 +54,8 @@ protected boolean shouldHandleException(Throwable t, AgentSpan span) { } // do not handle exception with no stacktrace. cannot capture anything for it. // includes also FastThrow ones - if (t.getStackTrace().length == 0) { + StackTraceElement[] stackTrace = t.getStackTrace(); + if (stackTrace == null || stackTrace.length == 0) { return false; } return circuitBreaker.trip();