What i see here looks like a swank request which results in a lisp error signalled, does not cause entrance into the debugger in the context of that request, but rather causes a next request to be served, for some obscure reason.
the .emacs snippet i invoke looks like that:
(defun foo () (interactive) (slime-start :program "sbcl" :init-function (lambda () (cd "/some/where/") (slime-load-file "package.lisp") (slime-repl-set-package ":lispdb"))))
I.e, we're talking about two swank requests here -- load-file, and then, once that completes, repl-set-package.
when i run it, the following might or might not happen, due to circumstances i still did not have figured out:
(note that the error appearing in frame 11 is expected -- it is not that error which is the problem -- the problem is that swank silently skips processing that request, and goes on with the next one (which causes another error))
The assertion (PACKAGEP SWANK::P) failed. [Condition of type SIMPLE-ERROR]
Restarts: 0: [CONTINUE] Retry assertion. 1: [ABORT] Return to sldb level 1. 2: [ABORT] Return to SLIME's top level. 3: [ABORT] Exit debugger, returning to top level.
Backtrace: 0: (SB-KERNEL:ASSERT-ERROR (PACKAGEP SWANK::P) NIL NIL) 1: (SWANK:SET-PACKAGE ":lispdb") 2: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:SET-PACKAGE ":lispdb") #<NULL-LEXENV>) 3: ((LAMBDA ())) 4: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {A6AD52D}>) 5: (SWANK::SLDB-LOOP 1) 6: (SWANK::CALL-WITH-BINDINGS ((*PRINT-PRETTY* . T) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) (*PRINT-PPRINT-DISPATCH* . #<SB-PRETTY:PPRINT-DISPATCH-TABLE {A7B9999}>) (*PRINT-GENSYM* . T) (*PRINT-BASE* . 10) (*PRINT-RADIX*) (*PRINT-ARRAY* . T) ...) #<FUNCTION (LAMBDA #) {ADFC5A5}>) 7: ((LAMBDA (SWANK-BACKEND::DEBUGGER-LOOP-FN)) #<FUNCTION (LAMBDA #) {ADFC555}>) 8: (SWANK::DEBUG-IN-EMACS #<SIMPLE-ERROR {B2EBAC9}>) 9: (INVOKE-DEBUGGER #<SIMPLE-ERROR {B2EBAC9}>) 10: (INVOKE-DEBUGGER #<SIMPLE-ERROR {B2EBAC9}>) 11: (ERROR "ASDF_ROOT is not set: where are the ASDF modules to be found?") 12: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ERROR "ASDF_ROOT is not set: where are the ASDF modules to be found?") #<NULL-LEXENV>) 13: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN NIL (ERROR "ASDF_ROOT is not set: where are the ASDF modules to be found?")) #<NULL-LEXENV>) 14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (UNLESS *ASDFROOT* (ERROR "ASDF_ROOT is not set: where are the ASDF modules to be found?")) #<NULL-LEXENV>) 15: (SB-FASL::LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /home/deepfire/source/lispdb/package.lisp" {B2E98A1}> NIL NIL) 16: (SB-FASL::INTERNAL-LOAD #P"/home/deepfire/source/lispdb/package.lisp" #P"/home/deepfire/source/lispdb/package.lisp" :ERROR NIL NIL :SOURCE :DEFAULT) 17: (SB-FASL::INTERNAL-LOAD #P"/home/deepfire/source/lispdb/package.lisp" #P"/home/deepfire/source/lispdb/package.lisp" :ERROR NIL NIL NIL :DEFAULT) 18: (LOAD "/home/deepfire/source/lispdb/package.lisp") 19: (SWANK:LOAD-FILE "/home/deepfire/source/lispdb/package.lisp")
SLIME is about two weeks old, or so.
regards, Samium Gromoff
Samium Gromoff _deepfire@feelingofgreen.ru writes:
What i see here looks like a swank request which results in a lisp error signalled, does not cause entrance into the debugger in the context of that request, but rather causes a next request to be served, for some obscure reason.
the .emacs snippet i invoke looks like that:
(defun foo () (interactive) (slime-start :program "sbcl" :init-function (lambda () (cd "/some/where/") (slime-load-file "package.lisp") (slime-repl-set-package ":lispdb"))))
I.e, we're talking about two swank requests here -- load-file, and then, once that completes, repl-set-package.
slime-load-file is an asynchronous request (as it should be). you need to wait until the file is done loading, and therefore the package exists, before continuing.
you could use something like this to have the call block until the loading is done (though this will block emacs as well): [totally untested]
(slime-eval-with-transcript `(swank:load-file ,"package.lisp") (lambda (value) (slime-repl-set-package ":lispdb")))