Bug 578258 - DeadlockDetector report is missing thread dumps Add stack trace dumps of deadlocked threads to DeadlockDetector. Change-Id: Ib6fe78d9aef853a45f5d474744e5c47fec0bf790 Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com> Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.runtime/+/189734 Tested-by: Platform Bot <platform-bot@eclipse.org> Reviewed-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java index 488ce69..717182b 100644 --- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java +++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
@@ -615,6 +615,16 @@ } buf.append("and is waiting for lock "); //$NON-NLS-1$ buf.append(waitLock); + StackTraceElement[] stackTrace = thread.getStackTrace(); + if (stackTrace.length > 0) { + buf.append(System.lineSeparator()); + for (StackTraceElement stackTraceElement : stackTrace) { + buf.append('\t'); + buf.append("at "); //$NON-NLS-1$ + buf.append(stackTraceElement); + buf.append(System.lineSeparator()); + } + } Status child = new Status(IStatus.ERROR, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, buf.toString(), null); main.add(child); }