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);
 		}