[slime-devel] Re: slime-edit-definition woes
Edi Weitz
edi at agharta.de
Sat Mar 5 20:24:23 UTC 2005
On 05 Mar 2005 11:29:07 +0100, Luke Gorrie <luke at synap.se> wrote:
> Please put something like this in your .swank.lisp:
>
> (setq swank::*log-output* (open "/tmp/log.txt" :direction :output))
> (setq swank:*log-events* t)
>
> and then save and post the log file the next time this happens.
OK, I think I now have a reproducible test case although it involves a
rather large system using various third-party libraries.
It turns out that if I wait long enough SLIME returns and I don't have
to kill Emacs.
The offending part of the log file looks like this (imagine a very
long pause between the first lines where slime-edit-definition is
invoked and the rest):
READ: (:emacs-rex (swank:find-definitions-for-emacs "get-projects-for-costs") ":acc" t 7)
DISPATCHING: (:EMACS-REX
(SWANK:FIND-DEFINITIONS-FOR-EMACS "get-projects-for-costs")
":acc" T 7)
DISPATCHING: (:DEBUG #<Process Idle Loop {58004595}> 1 ("Heap (dynamic space) overflow" " [Condition of type KERNEL:HEAP-OVERFLOW]" NIL NIL) (("ABORT" "Abort handling SLIME request.") ("CONTINUE" "Return NIL from load of \"home:.cmucl-init\".") ("ABORT" "Skip remaining initializations.")) ((0 "((METHOD SWANK-BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT NIL (T)) #<#1=unused-arg> #<#1#> #<Function \"DEFUN DEBUG-IN-EMACS\" {59CFEEF1}>)") (1 "(SWANK::CALL-WITH-BINDINGS ((*PRINT-PRETTY*) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) ...) #<Function \"DEFUN DEBUG-IN-EMACS\" {59CFEEB1}>)") (2 "(SWANK::DEBUG-IN-EMACS #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (3 "(INVOKE-DEBUGGER #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (4 "(ERROR KERNEL:HEAP-OVERFLOW)") (5 "(KERNEL:DYNAMIC-SPACE-OVERFLOW-WARNING-HIT)")) (7))
WRITE: (:debug 0 1 ("Heap (dynamic space) overflow" " [Condition of type KERNEL:HEAP-OVERFLOW]" nil nil) (("ABORT" "Abort handling SLIME request.") ("CONTINUE" "Return NIL from load of \"home:.cmucl-init\".") ("ABORT" "Skip remaining initializations.")) ((0 "((METHOD SWANK-BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT NIL (T)) #<#1=unused-arg> #<#1#> #<Function \"DEFUN DEBUG-IN-EMACS\" {59CFEEF1}>)") (1 "(SWANK::CALL-WITH-BINDINGS ((*PRINT-PRETTY*) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) ...) #<Function \"DEFUN DEBUG-IN-EMACS\" {59CFEEB1}>)") (2 "(SWANK::DEBUG-IN-EMACS #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (3 "(INVOKE-DEBUGGER #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (4 "(ERROR KERNEL:HEAP-OVERFLOW)") (5 "(KERNEL:DYNAMIC-SPACE-OVERFLOW-WARNING-HIT)")) (7))
DISPATCHING: (:DEBUG-ACTIVATE #<Process Idle Loop {58004595}> 1)
WRITE: (:debug-activate 0 1)
READ: (:emacs-rex (swank:backtrace 1 40) nil 0 8)
DISPATCHING: (:EMACS-REX (SWANK:BACKTRACE 1 40) NIL 0 8)
DISPATCHING: (:RETURN #<Process Idle Loop {58004595}> (:OK ((1 "(SWANK::CALL-WITH-BINDINGS ((*PRINT-PRETTY*) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) ...) #<Function \"DEFUN DEBUG-IN-EMACS\" {59CFEEB1}>)") (2 "(SWANK::DEBUG-IN-EMACS #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (3 "(INVOKE-DEBUGGER #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (4 "(ERROR KERNEL:HEAP-OVERFLOW)") (5 "(KERNEL:DYNAMIC-SPACE-OVERFLOW-WARNING-HIT)"))) 8)
WRITE: (:return (:ok ((1 "(SWANK::CALL-WITH-BINDINGS ((*PRINT-PRETTY*) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) ...) #<Function \"DEFUN DEBUG-IN-EMACS\" {59CFEEB1}>)") (2 "(SWANK::DEBUG-IN-EMACS #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (3 "(INVOKE-DEBUGGER #<KERNEL:HEAP-OVERFLOW {77F0003D}>)") (4 "(ERROR KERNEL:HEAP-OVERFLOW)") (5 "(KERNEL:DYNAMIC-SPACE-OVERFLOW-WARNING-HIT)"))) 8)
DISPATCHING: (:DEBUG-ACTIVATE #<Process Idle Loop {58004595}> 1)
WRITE: (:debug-activate 0 1)
READ: (:emacs-rex (swank:frame-locals-for-emacs 1) nil 0 9)
Here's the debugging info I get from within SLIME:
Heap (dynamic space) overflow
[Condition of type KERNEL:HEAP-OVERFLOW]
Restarts:
0: [ABORT] Abort handling SLIME request.
1: [CONTINUE] Return NIL from load of "home:.cmucl-init".
2: [ABORT] Skip remaining initializations.
Backtrace:
0: ((METHOD SWANK-BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT NIL (T)) #<#1=unused-arg> #<#1#> #<Function "DEFUN DEBUG-IN-EMACS" {59CFEEF1}>)
1: (SWANK::CALL-WITH-BINDINGS ((*PRINT-PRETTY*) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) ...) #<Function "DEFUN DEBUG-IN-EMACS" {59CFEEB1}>)
Locals:
SWANK::ALIST = ((*PRINT-PRETTY*) (*PRINT-LEVEL* . 4) (*PRINT-LENGTH* . 10) (*PRINT-CIRCLE* . T) (*PRINT-READABLY*) (*PRINT-PPRINT-DISPATCH* . #<PRETTY-PRINT::PPRINT-DISPATCH-TABLE {61E70BCD}>) (*PRINT-GENSYM* . T) (*PRINT-BASE* . 10) (*PRINT-RADIX*) (*PRINT-ARRAY* . T) ...)
SWANK::FUN = #<Function "DEFUN DEBUG-IN-EMACS" {59CFEEB1}>
FUNCTION = #:INVALID
C::VALS = #:INVALID
C::VARS = #:INVALID
[No catch-tags]
2: (SWANK::DEBUG-IN-EMACS #<KERNEL:HEAP-OVERFLOW {77F0003D}>)
Locals:
CONDITION = #<KERNEL:HEAP-OVERFLOW {77F0003D}>
[No catch-tags]
3: (INVOKE-DEBUGGER #<KERNEL:HEAP-OVERFLOW {77F0003D}>)
Locals:
CONDITION = #<KERNEL:HEAP-OVERFLOW {77F0003D}>
FUNCTION = #:INVALID
DEBUG::HOOK = #:INVALID
[No catch-tags]
4: (ERROR KERNEL:HEAP-OVERFLOW)
Locals:
CONDITIONS::ARGUMENTS = NIL
CONDITION = #:INVALID
CONDITIONS::DATUM = KERNEL:HEAP-OVERFLOW
CONDITIONS::FRAME = #:INVALID
CONDITIONS::NAME = #:INVALID
[No catch-tags]
5: (KERNEL:DYNAMIC-SPACE-OVERFLOW-WARNING-HIT)
Locals:
[No catch-tags]
What seems strange to me is that one of the restarts I get is
Return NIL from load of "home:.cmucl-init".
At that point loading of ~/.cmucl-init should have been history
already.
Let me know if you need more info. I can send you the whole code if
needed but I don't want to post it to the list - it's big and ugly and
part of a commercial project.
Cheers,
Edi.
More information about the slime-devel
mailing list