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