The following reply was made to PR os-linux/588; it has been noted by GNATS.
From: Dean Gaudet <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: os-linux/588: "select: (listen): Bad address" quickly repeats to errors.log until disk full. Date: Wed, 24 Sep 1997 23:58:17 -0700 (PDT) The following patch was committed to the code to work around this problem. Dean ---------- Forwarded message ---------- Date: Mon, 22 Sep 1997 14:55:32 -0700 (PDT) From: Dean Gaudet <[EMAIL PROTECTED]> Reply-To: new-httpd@apache.org To: [EMAIL PROTECTED] Subject: cvs commit: apache/src CHANGES http_main.c dgaudet 97/09/22 14:55:30 Modified: src Tag: APACHE_1_2_X CHANGES http_main.c Log: Defend against linux EFAULT infinite loop on select(). PR: 1107 Submitted by: Rick Franchuk <[EMAIL PROTECTED]> Reviewed by: Dean Gaudet, Marc Slemko, Roy Fielding Revision Changes Path No revision No revision 1.286.2.53 +5 -0 apache/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.286.2.52 retrieving revision 1.286.2.53 diff -u -r1.286.2.52 -r1.286.2.53 --- CHANGES 1997/08/21 22:56:18 1.286.2.52 +++ CHANGES 1997/09/22 21:55:23 1.286.2.53 @@ -1,3 +1,8 @@ +Changes with Apache 1.2.5 + + *) Work around problem under Linux where a child will start looping + reporting a select error over and over. + [Rick Franchuk <[EMAIL PROTECTED]>] PR#1107 Changes with Apache 1.2.4 1.149.2.9 +9 -1 apache/src/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apache/src/http_main.c,v retrieving revision 1.149.2.8 retrieving revision 1.149.2.9 diff -u -r1.149.2.8 -r1.149.2.9 --- http_main.c 1997/08/15 17:29:50 1.149.2.8 +++ http_main.c 1997/09/22 21:55:25 1.149.2.9 @@ -1776,8 +1776,16 @@ exit(0); errno = errsave; - if (srv < 0 && errno != EINTR) + if (srv < 0 && errno != EINTR) { +#ifdef LINUX + if (errno == EFAULT) { + log_unixerr("select", "(listen) fatal, exiting", + NULL, server_conf); + exit(1); + } +#endif log_unixerr("select", "(listen)", NULL, server_conf); + } if (srv <= 0) continue;