Bug 8322 - Detail evaluation timeout overwrites previous value
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/ASTEvaluationEngine.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/ASTEvaluationEngine.java
index 405a868..994a327 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/ASTEvaluationEngine.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/ASTEvaluationEngine.java
@@ -24,6 +24,7 @@
 import org.eclipse.jdt.debug.eval.ast.model.IVariable;
 import org.eclipse.jdt.internal.debug.eval.ast.engine.ASTAPIVisitor;
 import org.eclipse.jdt.internal.debug.eval.ast.engine.InstructionSequence;
+import org.eclipse.jdt.internal.debug.core.model.JDIThread;
 import org.eclipse.jdt.internal.debug.eval.EvaluationResult;
 
 
@@ -115,12 +116,19 @@
 					public void run() {
 						while (!fEvaluationComplete && !fEvaluationCancelled) {
 							try {
-								Thread.currentThread().sleep(3000); // 3 second timeout for now
+								Thread.currentThread().sleep(10000); // 10 second timeout for now
 							} catch(InterruptedException e) {
 							}
 							if (!fEvaluationComplete) {
-								if (!listener.evaluationTimedOut(thread)) {
-									fEvaluationCancelled= true;
+								try {
+									thread.suspend();
+									if (!listener.evaluationTimedOut(thread)) {
+										fEvaluationCancelled= true;
+									} else {
+										// Keep waiting
+										thread.resume();
+									}
+								} catch(DebugException e) {
 								}
 							}
 						}