From: Miroslav Lichvar Date: Fri, 14 Jun 2013 10:37:24 +0000 (+0200) Subject: Don't abort on EINTR select errors X-Git-Tag: 1.28-pre1~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f7802f0111ac943227488d6197e5992fb9722f3d;p=thirdparty%2Fchrony.git Don't abort on EINTR select errors --- diff --git a/sched.c b/sched.c index c2758050..7d0cc826 100644 --- a/sched.c +++ b/sched.c @@ -561,7 +561,7 @@ void SCH_MainLoop(void) { fd_set rd; - int status; + int status, errsv; struct timeval tv, *ptv; struct timeval now, cooked; double err; @@ -592,6 +592,7 @@ SCH_MainLoop(void) assert(ptv || n_read_fds); status = select(one_highest_fd, &rd, NULL, NULL, ptv); + errsv = errno; LCL_ReadRawTime(&now); LCL_CookTime(&now, &cooked, &err); @@ -606,7 +607,9 @@ SCH_MainLoop(void) last_select_ts_err = err; if (status < 0) { - assert(need_to_exit); + if (!need_to_exit && errsv != EINTR) { + LOG_FATAL(LOGF_Scheduler, "select() failed : %s", strerror(errsv)); + } } else if (status > 0) { /* A file descriptor is ready to read */