diff --git a/interface/debug.lisp b/interface/debug.lisp
index 753f70d39a7f48febb51ec93a3ab2e7c81aa1257..873a67432088519fd09c6e33b21c6e73301fdf82 100644
--- a/interface/debug.lisp
+++ b/interface/debug.lisp
@@ -549,6 +549,10 @@
 
 
 
+;;; Used to prevent recursive invocations of the windowing debugger.
+;;;
+(defvar *in-windowing-debugger* nil)
+
 ;;; INVOKE-DEBUGGER -- Public
 ;;;
 ;;; Invokes the Lisp debugger.  It executes some common debugger setup code
@@ -572,12 +576,13 @@
 	 (*print-readably* nil)
 	 (*read-eval* t))
     (if (or (not (use-graphics-interface))
+	    *in-windowing-debugger*
 	    (typep condition 'xti:toolkit-error))
 	(progn
 	  (format *error-output* "~2&~A~2&" *debug-condition*)
 	  (unless (typep condition 'step-condition)
 	    (show-restarts *debug-restarts* *error-output*))
 	  (internal-debug))
-	(progn
+	(let ((*in-windowing-debugger* t))
 	  (write-line "Invoking debugger...")
 	  (invoke-motif-debugger condition)))))