bugs in C::SOURCE-LOCATION and string reversal
Matt Kaufmann <[email protected]> Mon, 13 May 2013 09:07:16 -0500
| Newsgroups | gmane.lisp.cmucl.general |
|---|---|
| Message-ID | <[email protected]> |
Hi -- I downloaded the 2013-05 snapshot from http://trac.common-lisp.net/cmucl (http://common-lisp.net/project/cmucl/downloads/snapshots/2013/05/cmucl-2013-05-x86-linux.tar.bz2), and I am running into two bugs, discussed below. The first is kind of a show-stopper. It's hit me before using CMUCL 19e (so I guess it's been around awhile), but at that time I was able to avoid it simply by not running my application in a particular "mode". I'd appreciate any suggestions for easily working around that first bug. I've worked around the second bug, but I thought I should report it, and I do so at the end, below. The first bug pertains to C::SOURCE-LOCATION. Below is part of the log, showing three errors during compilation followed by a break during load of the resulting compiled file. ; ; ; File: /v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/[email protected] ; In: DEFMACRO GL-BDD-MODE => DEFATTACH GL::BFR-MODE ; (DEFATTACH GL::BFR-MODE GL::BFR-BDD) ; --> DEFPARAMETER PROGN LISP::SET-DEFVAR-SOURCE-LOCATION ; --> LISP::SET-DEFVAR-SOURCE-LOCATION ; ==> ; (C::SOURCE-LOCATION) ; Error: (during macroexpansion) ; Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER: ; 27574 is not of type (UNSIGNED-BYTE 14) ; ; In: DEFMACRO GL-BDD-MODE => DEFATTACH GL::BFR-COUNTEREX-MODE ; (DEFATTACH GL::BFR-COUNTEREX-MODE GL::BFR-COUNTEREX-BDD) ; --> DEFPARAMETER PROGN LISP::SET-DEFVAR-SOURCE-LOCATION ; --> LISP::SET-DEFVAR-SOURCE-LOCATION ; ==> ; (C::SOURCE-LOCATION) ; Error: (during macroexpansion) ; Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER: ; 27575 is not of type (UNSIGNED-BYTE 14) ; ; In: DEFMACRO GL-BDD-MODE => DEFATTACH (GL::BFR-SAT GL::BFR-SAT-BDD) ; (DEFATTACH (GL::BFR-SAT GL::BFR-SAT-BDD) :HINTS (# #)) ; --> PROGN DEFPARAMETER PROGN LISP::SET-DEFVAR-SOURCE-LOCATION ; --> LISP::SET-DEFVAR-SOURCE-LOCATION ; ==> ; (C::SOURCE-LOCATION) ; Error: (during macroexpansion) ; Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER: ; 27576 is not of type (UNSIGNED-BYTE 14) ; ; Compilation unit finished. ; 3 errors ; Loading #P"/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f". Execution of a form compiled with errors: (C::SOURCE-LOCATION) [Condition of type KERNEL:SIMPLE-PROGRAM-ERROR] Restarts: 0: [CONTINUE] Return NIL from load of "/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f". 1: [ABORT ] Skip remaining initializations. Debug (type H for help) ("Top-Level Form")[:TOP-LEVEL] Source: 0] backtrace 0: ("Top-Level Form")[:TOP-LEVEL] 1: (LISP::FOP-FUNCALL-FOR-EFFECT) 2: (LISP::LOAD-GROUP #<Stream for file "/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f">) 3: (LISP::FASLOAD #<Stream for file "/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f">) 4: (LISP::INTERNAL-LOAD #P"/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f" #P"/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f" :ERROR :BINARY ...) 5: (LISP::INTERNAL-LOAD #P"/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f" #P"/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f" :ERROR NIL ...) 6: (LOAD "/v/filer4b/v11q002/acl2space/acl2/devel/books/centaur/gl/gl.sse2f" :VERBOSE NIL :PRINT ...) ..... I tried a workaround or two with the sort of approach I used below for the second error; but that didn't help. Also, I don't care about source location information, but I didn't see a way simply to turn it off (as I do when compiling with CCL). The second bug is in computing (reverse ""), as shown below. ------------------------------ charity:~> uname -a Linux charity 2.6.32-46-generic-pae #108-Ubuntu SMP Thu Apr 11 16:11:56 UTC 2013 i686 GNU/Linux charity:~> /projects/acl2/lisps/cmucl-snapshot-2013-05-20D-Unicode/bin/lisp CMU Common Lisp snapshot-2013-05 (20D Unicode), running on charity With core: /v/filer4b/v11q001/acl2/lisps/cmucl-snapshot-2013-05-20D-Unicode/lib/cmucl/lib/lisp-sse2.core Dumped on: Sat, 2013-05-11 11:18:42-05:00 on lorien2 See <http://www.cmucl.org/> for support information. Loaded subsystems: Unicode 1.29 with Unicode version 6.2.0 Python 1.1, target Intel x86/sse2 CLOS based on Gerd's PCL 2010/03/19 15:19:03 * (reverse "") Error in function LISP::ASSERT-ERROR: The assertion (<= (OR C::END2 (LENGTH C::STRING2)) (LENGTH C::STRING2)) failed. [Condition of type SIMPLE-ERROR] Restarts: 0: [CONTINUE] Retry assertion. 1: [ABORT ] Return to Top-Level. Debug (type H for help) (LISP::ASSERT-ERROR (<= (OR C::END2 #) (LENGTH C::STRING2)) NIL NIL) Source: Error finding source: Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists: target:code/macros.lisp. 0] ------------------------------ My fix is a bit ugly, but works: ; Fix a bug in CMUCL 20D. It seems sad to test (reverse "") twice, but ; attempts to avoid that produced warnings about variable *our-old-reverse* ; being undefined, even when using with-compilation-unit. #+cmucl (progn (when (null (ignore-errors (reverse ""))) (defconstant *our-old-reverse* (symbol-function 'reverse))) (without-package-locks (when (null (ignore-errors (reverse ""))) (defun reverse (x) (if (equal x "") "" (funcall *our-old-reverse* x))) (compile 'reverse)))) Notice also the message above about about "Source file no longer exists". I wonder if that's related to the first bug. Thank you. I really home someone can point me to a simple workaround for the first bug. Regards, Matt Kaufmann _______________________________________________ cmucl-help mailing list [email protected] http://lists.zs64.net/mailman/listinfo/cmucl-help