Date: Fri, 15 Mar 2013 17:14:22 +0100 From: Lilian - Devclic <lilian@devclic.fr> To: apache@FreeBSD.org Subject: Upgrade of mod_fastcgi Message-ID: <514348DE.9000701@devclic.fr>
next in thread | raw e-mail | index | archive | help
Hello, We had an issue with mod_fasctcgi. Some requests failed with no reason and these errors appears in the apache error log file : [Fri Mar 15 15:38:57 2013] [error] [client 91.198.44.22] (4)Interrupted system call: FastCGI: comm with server "/usr/local/sbin/php-fpm" aborted: select() failed, referer: https://sql.devclic.fr/db_structure.php?token=b9b99b544a46d355583070251708d948&db=devclic_si [Fri Mar 15 15:38:57 2013] [error] [client 91.198.44.22] FastCGI: incomplete headers (0 bytes) received from server "/usr/local/sbin/php-fpm", referer: https://sql.devclic.fr/db_structure.php?token=b9b99b544a46d355583070251708d948&db=devclic_si We had the same issue on Ubuntu and Debian system and we update the version to the latest 2.4.7. So, can you update the port to this version ? Or can you put this fix in the source code : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=504132 > Index: libapache-mod-fastcgi-2.4.2/mod_fastcgi.c > =================================================================== > --- libapache-mod-fastcgi-2.4.2.orig/mod_fastcgi.c 2008-11-02 16:42:49.000000000 +0000 > +++ libapache-mod-fastcgi-2.4.2/mod_fastcgi.c 2008-11-02 16:50:46.000000000 +0000 > @@ -2178,12 +2178,15 @@ > } > > /* wait on the socket */ > - select_status = ap_select(nfds, &read_set, &write_set, NULL, &timeout); > + /* Interrupted system calls do happen now and then, so retry on EINTR */ > + do { > + select_status = ap_select(nfds, &read_set, &write_set, NULL, &timeout); > + } while (select_status < 0 && errno == EINTR); > > if (select_status < 0) > { > ap_log_rerror(FCGI_LOG_ERR_ERRNO, r, "FastCGI: comm with server " > - "\"%s\" aborted: select() failed", fr->fs_path); > + "\"%s\" aborted: select() failed: \"%s\"", fr->fs_path, strerror(errno)); > state = STATE_ERROR; > break; > } > @@ -2246,11 +2249,19 @@ > } > > rv = fcgi_buf_socket_recv(fr->serverInputBuffer, fr->fd); > + /* > + * select(2) states: Under Linux, select() may report a socket > + * file descriptor as "ready for reading", while nevertheless a > + * subsequent read blocks. > + * Act as if the FD was not set if socket_recv returns EAGAIN. > + */ > + if (rv < 0 && errno == EAGAIN) > + break; > > if (rv < 0) > { > ap_log_rerror(FCGI_LOG_ERR, r, "FastCGI: comm with server " > - "\"%s\" aborted: read failed", fr->fs_path); > + "\"%s\" aborted: read failed: \"%s\"", fr->fs_path, strerror(errno)); > state = STATE_ERROR; > break; > } We test it on a production server and at this moment no more problem. Thanks a lot. Best Regards. -- Lilian RIGARD - Devclic Gérant - CEO & CTO Téléphone (Standard) / Phone : +33 811 69 64 45 (Prix appel local) Portable / Cell Phone : +33 6 29 59 21 34 E-mail : lilian@devclic.fr Web : http://www.devclic.fr Visitez nos sites internet : Forum-Webmaster <http://www.forum-webmaster.com> - MeilleursPrix <http://www.meilleursprix.net> - NDFR <http://www.ndfr.net> - E-commercant <http://www.e-commercant.com> - Blog du High-Tech <http://www.blogduhightech.com>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?514348DE.9000701>