If SLIME is connected to LispWorks running its own IDE and I execute "Compile Defun" on an arbitrary function in the LispWorks editor then I get a processor fault - full backtrace below. Does anyone have an idea what could be the cause?
FWIW, I can reproduce the error with a .lispworks init file that starts SWANK and is otherwise empty so it's pretty obvious that this is a problem related to SLIME/LW interaction.
Cheers, Edi.
** Processor Fault #xC0000005 at #x20C1C736 (#<function EDITOR::DISPLAY-COMPILE-FILE-STATUS 20C1C712>). [Condition of type SIMPLE-ERROR]
Restarts: 0: [ABORT] Abort job 1 :(BIND-STANDARD-STREAMS-AND-EXECUTE #1=#<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 20696154> (INTERNAL-DO-WITH-RANDOM-TYPEOUT #<closure (SUBFUNCTION CAPI::WITH-RANDOM-TYPEOUT-FUNC CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX) 213C123A> #1# #<CAPI:EDITOR-PANE CAPI:EDITOR-PANE 206A1034> #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 20695AB4> NIL)) 1: [ABORT] Quit process.
Backtrace: 0: CONDITIONS::CONDITIONS-ERROR (:INVISIBLEP T "** Processor Fault #x~X at #x~X~@[ (~s)~]." (3221225477 549570358 #<function EDITOR::DISPLAY-COMPILE-FILE-STATUS 20C1C712>)) Locals: CONDITIONS::DATUM = "** Processor Fault #x~X at #x~X~@[ (~s)~]." CONDITIONS::ARGUMENTS = (3221225477 549570358 #<function EDITOR::DISPLAY-COMPILE-FILE-STATUS 20C1C712>) [No catch-tags] 1: IO::FAULT-HANDLER-AUX (#<Raw value #x20C1C736 (549570358)> #<Raw value #xC0000005 (3221225477)>) Locals: IO::PC = #<Raw value #x20C1C736 (549570358)> IO::FAULT = #<Raw value #xC0000005 (3221225477)> [No catch-tags] 2: EDITOR::DISPLAY-COMPILE-FILE-STATUS (NIL #<pointer out of bounds 20C069AB> :DONT-KNOW) Locals: EDITOR::DONE = NIL EDITOR::CONDITION-SUMMARY = #<pointer out of bounds 20C069AB> EDITOR::FAILUREP = :DONT-KNOW [No catch-tags] 3: EDITOR::WITH-COMPILATION-ENVIRONMENT-AT-POINT-FN (#<EDITOR::POINT "foo.lisp" 0 offset 0 213C127C> NIL NIL #<closure (SUBFUNCTION 1 EDITOR::REGION-LISP-COMPILE) 213E7DFA>) Locals: EDITOR::POINT = #<EDITOR::POINT "foo.lisp" 0 offset 0 213C127C> EDITOR::START-MESSAGE = NIL EDITOR::END-MESSAGE = NIL EDITOR::BODY-FN = #<closure (SUBFUNCTION 1 EDITOR::REGION-LISP-COMPILE) 213E7DFA> [No catch-tags] 4: EDITOR::REGION-LISP-COMPILE (#<EDITOR:BUFFER #1=foo.lisp> #<EDITOR::POINT #1="foo.lisp" 0 offset 0 213C127C> #<EDITOR::POINT #1="foo.lisp" 0 offset 664 213C125C> &KEY NIL T #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 213C12A2>) Locals: EDITOR:BUFFER = #<EDITOR:BUFFER foo.lisp> EDITOR::START = #<EDITOR::POINT "foo.lisp" 0 offset 0 213C127C> EDITOR::END = #<EDITOR::POINT "foo.lisp" 0 offset 664 213C125C> PRINT = NIL EDITOR::PARTIALP = T EDITOR::PROGRESS-HOOK = #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 213C12A2> [No catch-tags] 5: EDITOR::IN-REGION-COMPILE (#<EDITOR:BUFFER #1=foo.lisp> #<EDITOR::POINT #1="foo.lisp" 0 offset 0 213C127C> #<EDITOR::POINT #1="foo.lisp" 0 offset 664 213C125C> &REST (:PRINT NIL :PARTIALP T :PROGRESS-HOOK #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 213C12A2>)) Locals: EDITOR:BUFFER = #<EDITOR:BUFFER foo.lisp> EDITOR::START = #<EDITOR::POINT "foo.lisp" 0 offset 0 213C127C> EDITOR::END = #<EDITOR::POINT "foo.lisp" 0 offset 664 213C125C> EDITOR::OPTIONS = (:PRINT NIL :PARTIALP T :PROGRESS-HOOK #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 213C12A2>) [No catch-tags] 6: EDITOR::BACKGROUND-REGION-COMPILE (#<EDITOR:BUFFER #1=foo.lisp> #<EDITOR::POINT #1="foo.lisp" 0 offset 0 213C127C> #<EDITOR::POINT #1="foo.lisp" 0 offset 664 213C125C> NIL &REST (:PRINT NIL :PARTIALP T :PROGRESS-HOOK #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 213C12A2>)) Locals: EDITOR:BUFFER = #<EDITOR:BUFFER foo.lisp> EDITOR::START = #<EDITOR::POINT "foo.lisp" 0 offset 0 213C127C> EDITOR::END = #<EDITOR::POINT "foo.lisp" 0 offset 664 213C125C> EDITOR::MESSAGES = NIL EDITOR::OPTIONS = (:PRINT NIL :PARTIALP T :PROGRESS-HOOK #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 213C12A2>) [No catch-tags] 7: CAPI::INTERNAL-DO-WITH-RANDOM-TYPEOUT (#<closure (SUBFUNCTION CAPI::WITH-RANDOM-TYPEOUT-FUNC CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX) 213C123A> #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 20696154> #<CAPI:EDITOR-PANE CAPI:EDITOR-PANE 206A1034> #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 20695AB4> NIL) Locals: CAPI::FUNC = #<closure (SUBFUNCTION CAPI::WITH-RANDOM-TYPEOUT-FUNC CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX) 213C123A> STREAM = #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 20696154> CAPI::PANE = #<CAPI:EDITOR-PANE CAPI:EDITOR-PANE 206A1034> CAPI:COLLECTOR-PANE = #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 20695AB4> CAPI::ALREADY-MAPPED = NIL [No catch-tags] 8: CAPI::BIND-STANDARD-STREAMS-AND-EXECUTE (#1=#<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 20696154> (CAPI::INTERNAL-DO-WITH-RANDOM-TYPEOUT #<closure (SUBFUNCTION CAPI::WITH-RANDOM-TYPEOUT-FUNC CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX) 213C123A> #1# #<CAPI:EDITOR-PANE CAPI:EDITOR-PANE 206A1034> #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 20695AB4> NIL)) Locals: STREAM = #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 20696154> CAPI::FUNC-ARGS = (CAPI::INTERNAL-DO-WITH-RANDOM-TYPEOUT #<closure (SUBFUNCTION CAPI::WITH-RANDOM-TYPEOUT-FUNC CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX) 213C123A> #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 20696154> #<CAPI:EDITOR-PANE CAPI:EDITOR-PANE 206A1034> #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 20695AB4> NIL) [No catch-tags] 9: MP::BACKGROUND-EXECUTE-LOOP NIL Locals: [No catch-tags] 10: (SUBFUNCTION MP::PROCESS-SG-FUNCTION MP::INITIALIZE-PROCESS-STACK) (:DONT-KNOW) Locals: MP::IGNORED = :DONT-KNOW [No catch-tags] 11: SYSTEM::%%FIRST-CALL-TO-STACK NIL Locals: [No catch-tags]
On Wed, 10 Aug 2005 10:59:22 +0200, Edi Weitz edi@agharta.de said:
Edi> If SLIME is connected to LispWorks running its own IDE and I execute Edi> "Compile Defun" on an arbitrary function in the LispWorks editor then Edi> I get a processor fault - full backtrace below. Does anyone have an Edi> idea what could be the cause?
The debugger's idea of the args to EDITOR::DISPLAY-COMPILE-FILE-STATUS might be bogus, so the output from tracing COMPILE-FILE and EDITOR::DISPLAY-COMPILE-FILE-STATUS would be useful.
__Martin
On Wed, 10 Aug 2005 13:22:22 +0100, Martin Simmons martin@lispworks.com wrote:
The debugger's idea of the args to EDITOR::DISPLAY-COMPILE-FILE-STATUS might be bogus, so the output from tracing COMPILE-FILE and EDITOR::DISPLAY-COMPILE-FILE-STATUS would be useful.
See below. This is what is written to the output pane up to the point where the error occurs.
0 COMPILE-FILE > ...
COMPILER::INPUT-FILE : #<EDITOR::EDITOR-REGION-STREAM #<EDITOR:BUFFER foo.lisp> 20683C14> COMPILER::IN-MEMORY : T :PARTIALP : T :FASL-P : NIL COMPILER::REAL-SOURCE-FILE-NAME : #P"C:/tmp/foo.lisp" :PROGRESS-HOOK : #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 206AB25A>
;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 0 ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 ;;; Source level debugging is on ;;; Source file recording is on ;;; Cross referencing is on ; (TOP-LEVEL-FORM 1) ; TRANSPOSE-LISTS-EDI 0 COMPILE-FILE < ... << VALUE-0 : NIL 0 EDITOR::DISPLAY-COMPILE-FILE-STATUS > ...
EDITOR::DONE : NIL
On Wed, 10 Aug 2005 14:34:32 +0200, Edi Weitz edi@agharta.de said:
Edi> On Wed, 10 Aug 2005 13:22:22 +0100, Martin Simmons martin@lispworks.com wrote:
The debugger's idea of the args to EDITOR::DISPLAY-COMPILE-FILE-STATUS might be bogus, so the output from tracing COMPILE-FILE and EDITOR::DISPLAY-COMPILE-FILE-STATUS would be useful.
Edi> See below. This is what is written to the output pane up to the point Edi> where the error occurs.
Edi> 0 COMPILE-FILE > ...
COMPILER::INPUT-FILE : #<EDITOR::EDITOR-REGION-STREAM #<EDITOR:BUFFER foo.lisp> 20683C14> COMPILER::IN-MEMORY : T :PARTIALP : T :FASL-P : NIL COMPILER::REAL-SOURCE-FILE-NAME : #P"C:/tmp/foo.lisp" :PROGRESS-HOOK : #<closure (SUBFUNCTION 1 EDITOR::PANE-PROGRESS-HOOK) 206AB25A>
Edi> ;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 0 Edi> ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 Edi> ;;; Source level debugging is on Edi> ;;; Source file recording is on Edi> ;;; Cross referencing is on Edi> ; (TOP-LEVEL-FORM 1) Edi> ; TRANSPOSE-LISTS-EDI Edi> 0 COMPILE-FILE < ... Edi> << VALUE-0 : NIL
Ah right, that would be the fault of someone called "eweitz" then :-)
I've commited a change to swank-lispworks.lisp that should fix it.
__Martin
On Wed, 10 Aug 2005 16:54:04 +0100, Martin Simmons martin@lispworks.com wrote:
Ah right, that would be the fault of someone called "eweitz" then :-)
Argh! Bad week. Mea culpa.
I've commited a change to swank-lispworks.lisp that should fix it.
Thanks. Maybe we can agree that PROG1 not returning all values is just a bit counter-intuitive... :)