[slime-devel] Problems with slime using sbcl on winXP (emacsW32)

Thomas Karolski thomas.karolski at googlemail.com
Fri Dec 5 21:04:15 UTC 2008


Helmut Eller schrieb:
> Does READ-CHAR-NO-HANG work properly on socket streams?
> There is a comment in HANDLE-LISTEN (in win32.lisp)
>   
Not sure - how could I test that? I think it should work on gray 
streams, but I'm not sure what slime is using.
> I suspect that WAIT-FOR-EVENT/EVENT-LOOP (in swank.lisp) blocks even
> though the timeout argument is t.  To see if that's actually the case,
> you could generate some debug output in WAIT-FOR-EVENT/EVENT-LOOP.  It's
> the easiest if you use LOG-EVENT for that.
Changed wait-for-event/event-loop into:
--------------------------------
(defun wait-for-event/event-loop (pattern timeout)
  (assert (or (not timeout) (eq timeout t)))
  (log-event "wait-for-event/event-loop: ~s ~s~%" pattern timeout)
  (let ((r (loop 
            (check-slime-interrupts)
            (let ((event (poll-for-event pattern)))
              (when event (return (car event))))
            (log-event "pre wait-for-input~%")
            (let ((events-enqueued *events-enqueued*)
                  (ready (wait-for-input (list (current-socket-io)) 
timeout)))
              (log-event "after wait-for-input~%")
              (cond ((and timeout (not ready))
                     (return (values nil t)))
                    ((or (/= events-enqueued *events-enqueued*)
                         (eq ready :interrupt))
                     ;; rescan event queue, interrupts may enqueue new 
events
                     )
                    (t
                     (assert (equal ready (list (current-socket-io))))
                     (dispatch-event (decode-message 
(current-socket-io)))))))))
    (log-event "-wait-for-event/event-loop: ~s~%" r)
    r))
--------------------------------
I attached the new *inferior-lisp* buffer.
The last message is "pre wait-for-input", which indicates that its 
hanging inside wait-for-input. I also tried putting a log-event before 
read-char-no-hang inside wait-for-input, but that didn't seem to get 
logged for some reason.
Seeing this I guess you're right. Is there any way to work around this 
issue? - it does work for earlier calls to wait-for-input after all 
(though those all don't have a timeout).

Regards,
Thomas K.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sbcl-repl-not-coming-back-inferior-lisp-log2.txt
URL: <https://mailman.common-lisp.net/pipermail/slime-devel/attachments/20081205/6df3e5e4/attachment.txt>


More information about the slime-devel mailing list