Upgrade of mod_fastcgi

Lilian - Devclic lilian at devclic.fr
Fri Mar 15 16:20:06 UTC 2013


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 at 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>


More information about the freebsd-apache mailing list