The attached patch fixes serve-event to suppress EINTR errors. This came
up while porting some code I wrote for SBCL.
The other attachment, test-serve-event.lisp contains test code. It
starts a thread running serve-all-events in a loop. The original thread
will run a loop that runs interrupt-process against the serve-event
thread every 5 seconds.
Running the test case without the patch will fail. With the patch,
interrupt-process will signal the second thread, causing select to exit
with EINTR, which will now just exit serve-event. With the patch, the
test case should print "serve-event-loop interrupted" on the console
every 5 seconds. It works for me. :-)