Index: /trunk/ccl/level-1/l1-readloop-lds.lisp
===================================================================
--- /trunk/ccl/level-1/l1-readloop-lds.lisp	(revision 657)
+++ /trunk/ccl/level-1/l1-readloop-lds.lisp	(revision 658)
@@ -389,5 +389,5 @@
 
 (defmacro new-backtrace-info (dialog youngest oldest tcr)
-  `(vector ,dialog ,youngest ,oldest ,tcr nil))
+  `(vector ,dialog ,youngest ,oldest ,tcr nil (%catch-top ,tcr)))
 
 (defun select-backtrace ()
@@ -410,15 +410,5 @@
   (when (and (%i< (interrupt-level) 0) (not *break-loop-when-uninterruptable*))
     (abort))
-  (let* ((context (new-backtrace-info nil
-                                      frame-pointer
-                                      (if *backtrace-contexts*
-                                        (or (child-frame
-                                             (bt.youngest (car *backtrace-contexts*))
-                                             (%current-tcr))
-                                            (last-frame-ptr))
-                                        (last-frame-ptr))
-                                      (%current-tcr)))
-         (*backtrace-contexts* (cons context *backtrace-contexts*))
-         (%handlers% (last %handlers%))		; firewall
+  (let* ((%handlers% (last %handlers%))		; firewall
          (*break-frame* frame-pointer)
          (*break-condition* condition)
@@ -435,4 +425,14 @@
          (*print-readably* nil))
     (unwind-protect
+         (let* ((context (new-backtrace-info nil
+                                      frame-pointer
+                                      (if *backtrace-contexts*
+                                        (or (child-frame
+                                             (bt.youngest (car *backtrace-contexts*))
+                                             (%current-tcr))
+                                            (last-frame-ptr))
+                                        (last-frame-ptr))
+                                      (%current-tcr)))
+                (*backtrace-contexts* (cons context *backtrace-contexts*)))
 	 (with-toplevel-commands :break
            (if *continuablep*
@@ -455,5 +455,5 @@
                   (read-loop :break-level (1+ *break-level*)))
              (application-ui-operation *application* :exit-backtrace-context
-                                       context)))
+                                       context))))
       (setf (interrupt-level) level))))
 
