From 60822c12d0eca24a6ff295e3080b4457d9e9d72a Mon Sep 17 00:00:00 2001
From: Francois-Rene Rideau <tunes@google.com>
Date: Fri, 25 Oct 2013 00:21:04 -0400
Subject: [PATCH] Non-empty backtraces for ABCL and ECL.

---
 uiop/image.lisp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/uiop/image.lisp b/uiop/image.lisp
index 68233fc3..98484dee 100644
--- a/uiop/image.lisp
+++ b/uiop/image.lisp
@@ -94,7 +94,8 @@ This is designed to abstract away the implementation specific quit forms."
     "Print a backtrace, directly accessing the implementation"
     (declare (ignorable stream count))
     #+abcl
-    (let ((*debug-io* stream)) (top-level::backtrace-command count))
+    (dolist (frame (sys:backtrace))
+      (println frame stream))
     #+allegro
     (let ((*terminal-io* stream)
           (*standard-output* stream)
@@ -117,7 +118,10 @@ This is designed to abstract away the implementation specific quit forms."
           (debug:*debug-print-length* *print-length*))
       (debug:backtrace most-positive-fixnum stream))
     #+ecl
-    (si::tpl-backtrace)
+    (let* ((backtrace (loop :for ihs :from 0 :below (si:ihs-top)
+                            :collect (list (si::ihs-fun ihs)
+                                           (si::ihs-env ihs)))))
+      (dolist (frame (nreverse backtrace)) (writeln frame :stream stream)))
     #+lispworks
     (let ((dbg::*debugger-stack*
             (dbg::grab-stack nil :how-many (or count most-positive-fixnum)))
-- 
GitLab