From d1951668ccd761ec78de15830cb56a2ed9a8920b Mon Sep 17 00:00:00 2001 From: Amr Gharbeia Date: Mon, 4 May 2026 12:57:16 -0400 Subject: [PATCH] fix: TUI undefined-function T crash + add backtrace diagnostics - Added (push PASSEPARTOUT_DATA_DIR asdf:*central-registry*) before quickload so TUI loads from deployed code, not stale Quicklisp cache - Added :force t to ql:quickload :passepartout/tui to ensure recompilation - Added handler-bind for undefined-function around tui-main call: prints function name + full backtrace, then exits cleanly - Added sb-debug:print-backtrace to *debugger-hook* for all unhandled errors - TUI now starts without crash in tmux with TERM=screen-256color --- lisp/core-defpackage.lisp | 6 +++--- org/core-defpackage.org | 2 ++ passepartout | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lisp/core-defpackage.lisp b/lisp/core-defpackage.lisp index bd5ef20..9ffade7 100644 --- a/lisp/core-defpackage.lisp +++ b/lisp/core-defpackage.lisp @@ -24,9 +24,7 @@ #:run-setup-wizard #:skill-gateway-register #:skill-gateway-link - #:messaging-list-print - #:messaging-link - #:messaging-unlink + #:gateway-manager-main #:ingest-ast #:memory-object-get #:list-objects-by-type @@ -245,5 +243,7 @@ (format t "└─────────────────────────────────────────────┘~%") (format t "~%") (format t "Details: ~A~%" condition) + (format t "Backtrace:~%") + (sb-debug:print-backtrace :count 20 :stream *standard-output*) (finish-output) (uiop:quit 1))) diff --git a/org/core-defpackage.org b/org/core-defpackage.org index a7b7f9c..f850489 100644 --- a/org/core-defpackage.org +++ b/org/core-defpackage.org @@ -305,6 +305,8 @@ Friendly error handler that replaces the raw SBCL debugger with a diagnostic mes (format t "└─────────────────────────────────────────────┘~%") (format t "~%") (format t "Details: ~A~%" condition) + (format t "Backtrace:~%") + (sb-debug:print-backtrace :count 20 :stream *standard-output*) (finish-output) (uiop:quit 1))) #+end_src diff --git a/passepartout b/passepartout index b5cf5df..5883ee8 100755 --- a/passepartout +++ b/passepartout @@ -372,11 +372,12 @@ case "$COMMAND" in fi exec sbcl \ --eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' \ - --eval '(ql:quickload :passepartout/tui)' \ + --eval "(push (truename \"$PASSEPARTOUT_DATA_DIR/\") asdf:*central-registry*)" \ + --eval '(ql:quickload :passepartout/tui :force t)' \ --eval '(in-package :passepartout)' \ --eval "(load (format nil \"~alisp/system-model-provider.lisp\" (truename \"$PASSEPARTOUT_DATA_DIR/\")))" \ --eval "(load (format nil \"~alisp/system-model-explorer.lisp\" (truename \"$PASSEPARTOUT_DATA_DIR/\")))" \ - --eval '(passepartout.gateway-tui:tui-main)' + --eval '(handler-bind ((undefined-function (lambda (c) (format t "~%Undefined function: ~a~%" (cell-error-name c)) (sb-debug:print-backtrace :count 20) (finish-output) (uiop:quit 1)))) (passepartout.gateway-tui:tui-main))' ;; gateway) SUBCMD=$1; PLATFORM=$2; TOKEN=$3