Итак, я использую
sbcl --dynamic-space-size 1024 \
--noinform \
--load $HOME/quicklisp/setup.lisp \
--eval '(ql:quickload :myapp)' \
--eval "(sb-ext:save-lisp-and-die \"myapp\" :toplevel #'myapp::main :executable t :compression t)"
для локального генерирования myapp
и загрузки полученного двоичного файла на сервер.
Функция myapp:main
выполняет следующее (наряду снесколько других вещей инициализации для сервера) как указано здесь :
(bt:make-thread (lambda () (swank:create-server :port swank-port ; consider it to be 8080
:dont-close t)))
Я также делаю переадресацию портов на моей локальной машине:
ssh -L8080:127.0.0.1:8080 user@remote
Я могу slime-connect
к нему, когда myapp
запущен на моей локальной машине, когда я подключаюсь к нему с той же машины.
Однако, когда я пытаюсь slime-connect
на localhost
, 8080
на моей локальной машине, с myapp
на удаленном компьютере, я получаю ошибку как
Can't locate module: SWANK-IO-PACKAGE::SWANK-TRACE-DIALOG
[Condition of type SIMPLE-ERROR]
Restarts:
0: [*ABORT] Return to SLIME's top level.
1: [ABORT] abort thread (#<THREAD "worker" RUNNING {1005B6EB73}>)
Если я выберу [*ABORT]
, emacs выдаст мне error in process filter: No catch for tag: slime-result-2-212, (error "Synchronous Lisp Evaluation aborted")
(вминибуфер), без SLIME REPL.
Выбор [ABORT]
также дает почти то же самое error in process filter: Synchronous Lisp Evaluation aborted
.
Кроме того, если я пытаюсь что-то оценить в кадре, я получаю error in process filter: Invalid message protocol
.
PS: я использую AWS, в случае подробностейо группах безопасности актуальны.