[slime-devel] Lispworks; Windows gotcha

Alain.Picard at memetrics.com Alain.Picard at memetrics.com
Wed Dec 10 09:33:21 UTC 2003


Currently, we have:

(defun create-swank-server (port &key reuse-address)
  "Create a Swank TCP server on `port'.
Return the port number that the socket is actually listening on."
  (declare (ignore reuse-address))
  (comm:start-up-server-and-mp :announce *terminal-io* :service port
			       :process-name "Swank Request Processor"
			       :function 'swank-accept-connection
			       ) ; tsk tsk; terrible style!
  port)


>From the fine manual:

Note: start-up-server-and-mp  is implemented only on Unix/Linux/Mac OS platforms.

Which means the current CREATE-SWANK-SERVER for lispworks will
fail on Windows.  Now, I hate windows as much as the next guy,
but this seems unnecessarily rude; I suggest one of the following things:

 * revert to just comm:start-up-server.
   This has the advantage that many users either need to start up
   MP themselves later on.  Once comm:start-up-server-and-mp runs,
   you can no longer launch MP yourself from a chosen entry point.
   What was the rationale of using x-and-mp?

 * #+Unix #-Unix the code to only use x-an-mp on unices

 * do your own checks, e.g.
   (if MP::*MULTIPROCESSING*  ; I coulda sworn this used to be public in 4.2
       (comm:start-up-server ...)
       (comm:start-up-server-and-mp ...))

I'm not sure which is the best solution because I'm not sure why
it currently uses comm:start-up-server-and-mp.



This may or may not be related to another problem I'm having, which
is all works fine when I manually evaluate
 (load "/home/ap/Lisp/slime/swank-loader.lisp")
 (swank::create-swank-server 4005)

in a running lispworks and connecting via slime-connect,
but this fails when the above forms are in my .lispworks file
and I try C-u M-x slime [lisp?] my-lispworks-image

The process shows up:

    XOS 5 > (mp:ps)
    #<MP:PROCESS Name "Swank Request Processor" Priority 3 State "Waiting for connection"> 
    #<MP:PROCESS Name "Top level loop" Priority 0 State "Running"> 
    #<MP:PROCESS Name "The idle process" Priority -8388608 State "Running"> 
    NIL

    XOS 6 > 

But noone is actually listening on the socket. (as can be verified
with telnet).   Clues?

Thanks,




More information about the slime-devel mailing list