From 3d446163adb5602f4cf4743fb7f97ad187a6b2c0 Mon Sep 17 00:00:00 2001 From: Gabor Melis Date: Fri, 14 Nov 2008 14:07:46 +0000 Subject: [PATCH] 1.0.22.18: select() and EAGAIN On at least x86 linux 2.6.26 select() can return EAGAIN under load. I guess this is what the commit message of 1.0.21.8 refers to as "what happens in the wild" as EAGAIN is not mentioned in the select man page. --- src/code/serve-event.lisp | 5 +++-- tools-for-build/grovel-headers.c | 2 ++ version.lisp-expr | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/code/serve-event.lisp b/src/code/serve-event.lisp index 00e3dec1e..2046161d5 100644 --- a/src/code/serve-event.lisp +++ b/src/code/serve-event.lisp @@ -277,11 +277,12 @@ Shared between all threads, unless locally bound. EXPERIMENTAL.") (case err (#.sb!unix:ebadf (handler-descriptors-error)) - (#.sb!unix:eintr + ((#.sb!unix:eintr #.sb!unix:eagain) t) (otherwise (with-simple-restart (continue "Ignore failure and continue.") - (simple-perror "Unix system call select() failed" :errno err)))) + (simple-perror "Unix system call select() failed" + :errno err)))) #!+win32 (handler-descriptors-error)) ((plusp value) diff --git a/tools-for-build/grovel-headers.c b/tools-for-build/grovel-headers.c index 56069ae06..fb97cfce4 100644 --- a/tools-for-build/grovel-headers.c +++ b/tools-for-build/grovel-headers.c @@ -209,6 +209,7 @@ main(int argc, char *argv[]) defconstant("enoent", ENOENT); defconstant("eexist", EEXIST); defconstant("eintr", EINTR); + defconstant("eagain", EAGAIN); defconstant("s-ifmt", S_IFMT); defconstant("s-ifdir", S_IFDIR); @@ -308,6 +309,7 @@ main(int argc, char *argv[]) deferrno("ebadf", EBADF); deferrno("enoent", ENOENT); deferrno("eintr", EINTR); + deferrno("eagain", EAGAIN); deferrno("eio", EIO); deferrno("eexist", EEXIST); deferrno("eloop", ELOOP); diff --git a/version.lisp-expr b/version.lisp-expr index d68a864c3..410174722 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.22.17" +"1.0.22.18" -- 2.11.4.GIT