[Lispweb] Portable Allegroserve and SBCL ?

Aurelio Bignoli a.bignoli at computer.org
Wed Jul 7 08:24:00 CDT 2004


Francois-Rene Rideau writes:
 > While trying to run bknr on sbcl, I experienced the same bug as reported
 > by an anonymous user of portable allegro serve:
 > 
 > http://sourceforge.net/tracker/index.php?func=detail&aid=978568&group_id=32760&atid=406352

I had the same problem using SBCL 0.8.12 to compile CVS HEAD. After
some investigations, I discovered that it is caused by the following
unnoticed compilation error in main.cl:

------------------------------------------------------------------------
compilation aborted because of input error:
  READ failure in COMPILE-FILE:
    READER-ERROR at 7544 (line 224, column 40) on #<FILE-STREAM
                                                    for "file \"[...]/portableaserve/main.cl\""
                                                    {A365CC9}>:
Symbol "UNIX-FORK" not found in the SB-UNIX package.
------------------------------------------------------------------------

Indeed, UNIX-FORK has been removed from SB-UNIX package at least since
8.10.

I simply modified the unix-fork definition in main.cl as follows:

  (defun unix-fork ()   
    (sb-alien:define-alien-routine ("fork" unix-fork) integer))

and I was able to comile successfully aserve. There are some
compilation errors on webactions, but this is a different problem.

Running the example server, I discovered another bug:

------------------------------------------------------------------------
aserve-accept-6: 07/07/04 - 14:47:03 - accept: error 0 on accept The value #(192 168 1 4)
                          is not of type
                            (SIMPLE-ARRAY T (*)).
------------------------------------------------------------------------

After further investigations, I discovered that the error is caused by
the following DECLAIM in acl-compat/sbcl/acl-socket.lisp:

(declaim (ftype (function (simple-vector)
                          (values (unsigned-byte 32)))
                vector-to-ipaddr))

It seems that now sb-bsd-sockets:socket-name, whose return value is
passed to vector-to-ipaddr, returns a (simple-array (unsigned-byte 8) (4)). 



More information about the lispweb mailing list