1GFDAUG
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIThread.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIThread.java
index 6dd4d78..8cb02c1 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIThread.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIThread.java
@@ -137,6 +137,7 @@
 	 * invocations cannot be performed.

 	 */

 	protected boolean fInEvaluation = false;

+	protected boolean fEvaluationAborted = false;

 

 	/**

 	 * Creates a new thread on the underlying thread reference.

@@ -443,10 +444,24 @@
 		}

 

 		invokeComplete(timeout);

+		if (fEvaluationAborted) {

+			fEvaluationAborted = false;

+			resume();

+		}

 		return result;

 	}

 	

 	/**

+	 * Called by JDIValue when an evaluation of

+	 * #toString times out. Causes this thread to

+	 * be automatically resumed when it returns from

+	 * its evaluation - see <code>invokeMethod</code>.

+	 */

+	protected void abortEvaluation() {

+		fEvaluationAborted = true;

+	}

+	

+	/**

 	 * Invokes a method in this thread, creating a new instance of the given

 	 * class using the specified constructor, and returns the result.

 	 */

diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIValue.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIValue.java
index c2c76ef..aa1e95c 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIValue.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/JDIValue.java
@@ -401,6 +401,7 @@
 			return toString[0];

 		}	

 		

+		((JDIThread)fJavaThread).abortEvaluation();

 		requestFailed(ERROR_TO_STRING_TIMEOUT, null);

 		return null;

 	}