Reading a line from *query-io* two makes the next read-line return an empty string. Tested under cmucl/sbcl-mt with sigio/spawn. (defun foo () (list (read-line *query-io*) (read-line *query-io*) (read-line *query-io*))) CL-USER> (foo) 1 2 ("1" "" "2") Gabor