On Mon, Dec 18, 2006 at 09:32:52PM +0100, Edi Weitz wrote:
> This doesn't happen with LispWorks, though. At the moment, I have no
> idea what the problem is. Maybe an SBCL expert is reading this and
> can help.
Definitely an SBCL bug. Paring it down, it's hanging at the call to
make-instance -- it looks like any make-instance will do, it's not
something socket-specific. That is, this is a minimal testcase which
shows the problem is:
(defclass foo () ())
(defun foo (&aux done)
(flet ((do-it ()
(setf done t)))
(loop until done do (sleep 0.1))))
Remove the make-instance, and it terminates. Move the make-instance
into the main thread, and it terminates. Leave it there, it hangs
(and never gets to the point of running things like shared-initialize
or lsof would report the socket is created).
CC'd sbcl-devel, since getting into CLOS+thread bugs is way beyond my
level of SBCL knowledge. I hope that's an open list, as I'm not
subscribed there with this address. For those on that list but not
tbnl-devel: compile-file + load'ing the above snippet hangs SBCL.