Activity log for bug #1601927

Date Who What changed Old value New value Message
2016-07-11 18:23:18 Stas Boukarev bug added bug
2016-07-11 18:24:00 Stas Boukarev sbcl: importance Undecided Medium
2016-07-11 18:24:03 Stas Boukarev sbcl: status New Triaged
2016-07-11 18:24:12 Stas Boukarev tags os-darwin streams
2016-07-11 18:30:37 Stas Boukarev description When the other end of a FIFO closes wait-until-fd-usable doesn't exit. (let ((fifo #p"/tmp/fifo")) (unless (probe-file fifo) (sb-posix:mkfifo fifo #o644)) (sb-thread:make-thread (lambda () (with-open-file (stream fifo :direction :output :if-exists :overwrite) (write-char #\a stream)))) (with-open-file (stream fifo) (print (read-char stream)) (read-char stream nil :eof))) returns :EOF on linux but blocks on OSX. I pushed a workaround that always returns NIL in sysread-may-block-p on darwin for fifo streams. It breaks timeouts and interrupts but at least allows EOF to be signalled. When the other end of a FIFO closes wait-until-fd-usable doesn't exit. (let ((fifo #p"/tmp/fifo"))   (unless (probe-file fifo)     (sb-posix:mkfifo fifo #o644))   (sb-thread:make-thread    (lambda ()      (with-open-file (stream fifo :direction :output :if-exists :overwrite)        (write-char #\a stream))))   (with-open-file (stream fifo)     (print (read-char stream))     (read-char stream nil :eof))) returns :EOF on linux but blocks on OSX.