February 01, 2002
ACL, CMUCL, Bug Bug Bug!

Mike is finding bugs in things at an alarming rate.

First, when the following function is put in a file and cmucl's compile-file is called on that file, it causes a compilation error:

(defun foo ()

  (labels ((bar (&optional (a 1))

             (bar 0)))

    (bar 2)))

The error:

  Error in function COMMON-LISP::ASSERT-ERROR:

     The assertion (EQ (C::LAMBDA-TAIL-SET C::CALLER)

                       (C::LAMBDA-TAIL-SET (C::LAMBDA-HOME C::CALLEE))) failed.

Word is this may be fixed in the upcoming cmucl 18d release.

Then in ACL 6.1, (rename-file "grammar/old.txt" "grammar/new.txt") actually just changes the name of old.txt to new.txt, when according to the spec it should be doing a little more pathname merging, and try to move grammar/old.txt to grammar/grammar/new.txt.

The workaround is not to use relative directories with rename-file.

Another ACL bug is that you cannot call file-write-date (and probably a bunch of other functions) on a "probe stream" (as obtained by calling open with :direction :probe). It raises an error, when it should at worst just return nil (see section 20.1.2 of the spec).

Someone at Franz replied to Mike by saying "I must say you are very good at finding somewhat obscure bugs in our filesystem interface." Heh. Somewhat obscure? I never thought of calling any functions on a closed stream, and the existence of :direction :probe was the biggest Lisp surprise I've had in about four years.

Posted by jjwiseman at February 01, 2002 01:12 AM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?