From: Peter G. <pe...@ar...> - 2007-05-04 21:39:40
|
This is test.lisp: (defun foo (x y z) (declare (optimize debug)) (list x y z)) After compiling and loading this file, (disassemble 'foo) runs into an odd error (see below). Without the (declare (optimize debug)), disassembly works as expected. This is SBCL 1.0.5.28, an implementation of ANSI Common Lisp. More information about SBCL is available at <http://www.sbcl.org/>. SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. * (load (compile-file "test")) ; compiling file "/home/peter/xcl/x/test.lisp" (written 04 MAY 2007 02:27:04 PM): ; compiling (DEFUN FOO ...) ; /home/peter/xcl/x/test.fasl written ; compilation finished in 0:00:00 T * (disassemble 'foo) debugger invoked on a SIMPLE-TYPE-ERROR in thread #<THREAD "initial thread" {1002352E51}>: invalid array index 5 for #((0 0) (1 2 0) (2 3 0) (3 1 3 0) (4 4 0)) (should be nonnegative and <5) Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL. restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level. (SB-DISASSEM::GET-SOURCE-FORM #<SB-DI::COMPILED-CODE-LOCATION FOO> 0 #S(SB-DISASSEM::SOURCE-FORM-CACHE :DEBUG-SOURCE #S(SB-C::DEBUG-SOURCE :FROM :FILE :NAME "/home/peter/xcl/x/test.lisp" :CREATED 3387302824 :COMPILED 3387302900 :SOURCE-ROOT 0 :START-POSITIONS #(0) :FUNCTION NIL :PLIST NIL) :TOPLEVEL-FORM-INDEX 0 :TOPLEVEL-FORM (DEFUN FOO (X Y Z) (DECLARE (OPTIMIZE DEBUG)) (LIST X Y Z)) :FORM-NUMBER-MAPPING-TABLE #((0 0) (1 2 0) (2 3 0) (3 1 3 0) (4 4 0)) :LAST-LOCATION-RETRIEVED #<SB-DI::COMPILED-CODE-LOCATION FOO> :LAST-FORM-RETRIEVED 5)) 0] back 0: (SB-DISASSEM::GET-SOURCE-FORM #<SB-DI::COMPILED-CODE-LOCATION FOO> 0 #S(SB-DISASSEM::SOURCE-FORM-CACHE :DEBUG-SOURCE #S(SB-C::DEBUG-SOURCE :FROM :FILE :NAME "/home/peter/xcl/x/test.lisp" :CREATED 3387302824 :COMPILED 3387302900 :SOURCE-ROOT 0 :START-POSITIONS #(0) :FUNCTION NIL :PLIST NIL) :TOPLEVEL-FORM-INDEX 0 :TOPLEVEL-FORM (DEFUN FOO (X Y Z) (DECLARE (OPTIMIZE DEBUG)) (LIST X Y Z)) :FORM-NUMBER-MAPPING-TABLE #((0 0) (1 2 0) (2 3 0) (3 1 3 0) (4 4 0)) :LAST-LOCATION-RETRIEVED #<SB-DI::COMPILED-CODE-LOCATION FOO> :LAST-FORM-RETRIEVED 5)) 1: (SB-DISASSEM::GET-DIFFERENT-SOURCE-FORM #<SB-DI::COMPILED-CODE-LOCATION FOO> 0 #S(SB-DISASSEM::SOURCE-FORM-CACHE :DEBUG-SOURCE #S(SB-C::DEBUG-SOURCE :FROM :FILE :NAME "/home/peter/xcl/x/test.lisp" :CREATED 3387302824 :COMPILED 3387302900 :SOURCE-ROOT 0 :START-POSITIONS #(0) :FUNCTION NIL :PLIST NIL) :TOPLEVEL-FORM-INDEX 0 :TOPLEVEL-FORM (DEFUN FOO (X Y Z) (DECLARE (OPTIMIZE DEBUG)) (LIST X Y Z)) :FORM-NUMBER-MAPPING-TABLE #((0 0) (1 2 0) (2 3 0) (3 1 3 0) (4 4 0)) :LAST-LOCATION-RETRIEVED #<SB-DI::COMPILED-CODE-LOCATION FOO> :LAST-FORM-RETRIEVED 5)) 2: (SB-DISASSEM::ADD-SOURCE-TRACKING-HOOKS #<SB-DISASSEM:SEGMENT #X10024F40F5[442] in #<code object (SB-C::ESCAPE-FUN #:EXIT-BLOCK-0) {10024F406F}>> #<SB-DI::COMPILED-DEBUG-FUN FOO> #S(SB-DISASSEM::SOURCE-FORM-CACHE :DEBUG-SOURCE #S(SB-C::DEBUG-SOURCE :FROM :FILE :NAME "/home/peter/xcl/x/test.lisp" :CREATED 3387302824 :COMPILED 3387302900 :SOURCE-ROOT 0 :START-POSITIONS #(0) :FUNCTION NIL :PLIST NIL) :TOPLEVEL-FORM-INDEX 0 :TOPLEVEL-FORM (DEFUN FOO (X Y Z) (DECLARE (OPTIMIZE DEBUG)) (LIST X Y Z)) :FORM-NUMBER-MAPPING-TABLE #((0 0) (1 2 0) (2 3 0) (3 1 3 0) (4 4 0)) :LAST-LOCATION-RETRIEVED #<SB-DI::COMPILED-CODE-LOCATION FOO> :LAST-FORM-RETRIEVED 5)) 3: (SB-DISASSEM::ADD-DEBUGGING-HOOKS #<SB-DISASSEM:SEGMENT #X10024F40F5[442] in #<code object (SB-C::ESCAPE-FUN #:EXIT-BLOCK-0) {10024F406F}>> #<SB-DI::COMPILED-DEBUG-FUN FOO> #S(SB-DISASSEM::SOURCE-FORM-CACHE :DEBUG-SOURCE #S(SB-C::DEBUG-SOURCE :FROM :FILE :NAME "/home/peter/xcl/x/test.lisp" :CREATED 3387302824 :COMPILED 3387302900 :SOURCE-ROOT 0 :START-POSITIONS #(0) :FUNCTION NIL :PLIST NIL) :TOPLEVEL-FORM-INDEX 0 :TOPLEVEL-FORM (DEFUN FOO (X Y Z) (DECLARE (OPTIMIZE DEBUG)) (LIST X Y Z)) :FORM-NUMBER-MAPPING-TABLE #((0 0) (1 2 0) (2 3 0) (3 1 3 0) (4 4 0)) :LAST-LOCATION-RETRIEVED #<SB-DI::COMPILED-CODE-LOCATION FOO> :LAST-FORM-RETRIEVED 5)) 4: (SB-DISASSEM:MAKE-SEGMENT #<CLOSURE (LAMBDA #) {10024F67E9}> 442) 5: ((FLET SB-DISASSEM::ADD-SEG) 85 442 #<SB-DI::COMPILED-DEBUG-FUN FOO>) 6: (SB-DISASSEM:GET-FUN-SEGMENTS #<FUNCTION FOO>) 7: (SB-DISASSEM:DISASSEMBLE-FUN #<FUNCTION FOO>) 8: ((FLET #:WITH-PRETTY-STREAM-2332) #<SB-PRETTY:PRETTY-STREAM {10024F5481}>) 9: (DISASSEMBLE FOO) 10: (SB-INT:SIMPLE-EVAL-IN-LEXENV (DISASSEMBLE 'FOO) #<NULL-LEXENV>) 11: (INTERACTIVE-EVAL (DISASSEMBLE 'FOO)) 12: (SB-IMPL::REPL-FUN NIL) 13: (SB-IMPL::REPL-FUN NIL) 14: ((LAMBDA ())) 15: ((LAMBDA ())) 16: (SB-IMPL::%WITH-REBOUND-IO-SYNTAX #<CLOSURE (LAMBDA #) {100249BF49}>) 17: (SB-IMPL::TOPLEVEL-REPL NIL) 18: (SB-IMPL::TOPLEVEL-INIT) 19: ((LABELS SB-IMPL::RESTART-LISP)) 0] |
From: Nikodemus S. <nik...@ra...> - 2007-05-05 10:40:07
|
Peter Graves wrote: > This is test.lisp: > > (defun foo (x y z) > (declare (optimize debug)) > (list x y z)) > > After compiling and loading this file, (disassemble 'foo) runs into an > odd error (see below). > > Without the (declare (optimize debug)), disassembly works as expected. There are two discrere issues here: the bogoid position the error is about, and the failure to detect its bogosity. The latter has been fixed on 1.0.5.33, so that disassemble works but signals a warning about the remaining bogosity. Cheers, -- Nikodemus |