[slime-devel] Problems with slime using sbcl on winXP (emacsW32)
thomas.karolski at googlemail.com
Sat Dec 6 16:11:50 UTC 2008
Helmut Eller schrieb:
> For example with:
> (let ((socket (make-instance 'sb-bsd-sockets:inet-socket
> :type :stream :protocol :tcp)))
> (setf (sb-bsd-sockets:sockopt-reuse-address socket) t)
> (sb-bsd-sockets:socket-bind socket #(0 0 0 0) 5000)
> (sb-bsd-sockets:socket-listen socket 5)
> (sb-bsd-sockets:socket-accept socket)
> :output t :input t :element-type 'character)
> (sb-bsd-sockets:socket-close socket))))
> This creates a socket, waits for someone to connect, and calls
> read-char-no-hang on the new stream.
> Start this in SBCL and execute "telnet localhost 5000"
> in a shell. read-char-no-hang should return nil as soon
> as the telnet client connects.
> If it just waits, then you can type something into the telnet window and
> the first char should appear on the SBCL side. In this case
> read-char-no-hang doesn't work properly, it works like the ordinary
You're right, it does not return nil as soon as someone connects. It
does however return the first char as soon as I type something into the
> The best solution would be to fix HANDLE-LISTEN, but I don't know how to
> do that.
> As a workaround you can probably replace
> (wait-for-event `(:sldb-return ,(1+ level)) t) ; clean event-queue
> in sldb-loop with:
> (poll-for-event `(:sldb-return ,(1+ level))
That actually solved the problem!
Now given that the problem seems to be with sbcl's HANDLE-LISTEN, I
guess I'll check out their mailing list.
Many thanks there,
More information about the slime-devel