diff --git a/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/DefaultDsfExecutor.java b/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/DefaultDsfExecutor.java index 7c60e3b3611..d370bee27b3 100644 --- a/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/DefaultDsfExecutor.java +++ b/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/DefaultDsfExecutor.java @@ -167,6 +167,8 @@ public class DefaultDsfExecutor extends ScheduledThreadPoolExecutor */ TracingWrapper(int offset) { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); + // guard against the offset being greater than the stack trace + offset = Math.min(offset, stackTrace.length); fSubmittedAt = new StackTraceWrapper(new StackTraceElement[stackTrace.length - offset]); System.arraycopy(stackTrace, offset - 1, fSubmittedAt.fStackTraceElements, 0, fSubmittedAt.fStackTraceElements.length); if (isInExecutorThread() && fCurrentlyExecuting != null) {