Activity log for bug #1177684

Date Who What changed Old value New value Message
2013-05-08 07:34:05 Sander Smeenk bug added bug
2013-05-08 07:34:59 Sander Smeenk description The gd.so PHP5 extension (php5-gd, 5.3.10-1ubuntu3.6) 'leaks' FDs to /proc/NN/auxv or forgets to close them properly. Without php5-gd active: # apache2ctl start # for pid in `pidof apache2`; do find /proc/$pid/fd -ls 2>&1 | grep auxv; done | awk '{print $11" "$12" "$13}' # apache2ctl stop With php5-gd active: # mv /root/php/gd.ini . # cat gd.ini ; configuration for php GD module extension=gd.so # apache2ctl start # for pid in `pidof apache2`; do find /proc/$pid/fd -ls 2>&1 | grep auxv; done | awk '{print $11" "$12" "$13}' /proc/30866/fd/387 -> /proc/30861/auxv /proc/30865/fd/387 -> /proc/30861/auxv /proc/30864/fd/387 -> /proc/30861/auxv /proc/30863/fd/387 -> /proc/30861/auxv /proc/30862/fd/387 -> /proc/30861/auxv /proc/30861/fd/387 -> /proc/30861/auxv # With php5-gd active, after doing a graceful restart: # apache2ctl graceful # for pid in `pidof apache2`; do find /proc/$pid/fd -ls 2>&1 | grep auxv; done | awk '{print $11" "$12" "$13}' /proc/30932/fd/387 -> /proc/30861/auxv /proc/30932/fd/388 -> /proc/30861/auxv /proc/30930/fd/387 -> /proc/30861/auxv /proc/30930/fd/388 -> /proc/30861/auxv /proc/30929/fd/387 -> /proc/30861/auxv /proc/30929/fd/388 -> /proc/30861/auxv /proc/30928/fd/387 -> /proc/30861/auxv /proc/30928/fd/388 -> /proc/30861/auxv /proc/30926/fd/387 -> /proc/30861/auxv /proc/30926/fd/388 -> /proc/30861/auxv /proc/30925/fd/387 -> /proc/30861/auxv /proc/30925/fd/388 -> /proc/30861/auxv /proc/30861/fd/387 -> /proc/30861/auxv /proc/30861/fd/388 -> /proc/30861/auxv root@dot:/etc/php5/conf.d# Each 'graceful' increases the number of filehandles to /proc/NN/auxv. The NN-pid is always the 'process leader' or 'main apache thread'. Steps to reproduce: Fresh and clean Ubuntu Precise 12.04.2 install # apt-get install apache2-mpm-itk libapache2-mod-php5 php5-gd Restart Apache to ensure gd.so is loaded # for pid in `pidof apache2`; do find /proc/$pid/fd -ls; done | awk '/auxv/ {print $11" "$12" "$13}' # apache2ctl graceful # for pid in `pidof apache2`; do find /proc/$pid/fd -ls; done | awk '/auxv/ {print $11" "$12" "$13}' # apache2ctl graceful # for pid in `pidof apache2`; do find /proc/$pid/fd -ls; done | awk '/auxv/ {print $11" "$12" "$13}' .. etc This also happens with mpm-prefork. Strange though, there is no reference to 'auxv' in the sources other than a #define in readelf.h The filehandles might also be left open on other occations than a graceful restart, on my fairly loaded systems this quickly adds up. My nine webservers at this moment have a total of ~80000 filehandles opened for the procfs /proc/NN/auxv file The gd.so PHP5 extension (php5-gd, 5.3.10-1ubuntu3.6) 'leaks' FDs to /proc/NN/auxv or forgets to close them properly. Without php5-gd active: # apache2ctl start # for pid in `pidof apache2`; do find /proc/$pid/fd -ls 2>&1 | grep auxv; done | awk '{print $11" "$12" "$13}' # apache2ctl stop With php5-gd active: # mv /root/php/gd.ini . # cat gd.ini ; configuration for php GD module extension=gd.so # apache2ctl start # for pid in `pidof apache2`; do find /proc/$pid/fd -ls 2>&1 | grep auxv; done | awk '{print $11" "$12" "$13}' /proc/30866/fd/387 -> /proc/30861/auxv /proc/30865/fd/387 -> /proc/30861/auxv /proc/30864/fd/387 -> /proc/30861/auxv /proc/30863/fd/387 -> /proc/30861/auxv /proc/30862/fd/387 -> /proc/30861/auxv /proc/30861/fd/387 -> /proc/30861/auxv # With php5-gd active, after doing a graceful restart: # apache2ctl graceful # for pid in `pidof apache2`; do find /proc/$pid/fd -ls 2>&1 | grep auxv; done | awk '{print $11" "$12" "$13}' /proc/30932/fd/387 -> /proc/30861/auxv /proc/30932/fd/388 -> /proc/30861/auxv /proc/30930/fd/387 -> /proc/30861/auxv /proc/30930/fd/388 -> /proc/30861/auxv /proc/30929/fd/387 -> /proc/30861/auxv /proc/30929/fd/388 -> /proc/30861/auxv /proc/30928/fd/387 -> /proc/30861/auxv /proc/30928/fd/388 -> /proc/30861/auxv /proc/30926/fd/387 -> /proc/30861/auxv /proc/30926/fd/388 -> /proc/30861/auxv /proc/30925/fd/387 -> /proc/30861/auxv /proc/30925/fd/388 -> /proc/30861/auxv /proc/30861/fd/387 -> /proc/30861/auxv /proc/30861/fd/388 -> /proc/30861/auxv root@dot:/etc/php5/conf.d# Each 'graceful' increases the number of filehandles to /proc/NN/auxv. The NN-pid is always the 'process leader' or 'main apache thread'. Steps to reproduce: Fresh and clean Ubuntu Precise 12.04.2 install # apt-get install apache2-mpm-itk libapache2-mod-php5 php5-gd Restart Apache to ensure gd.so is loaded # for pid in `pidof apache2`; do find /proc/$pid/fd -ls; done | awk '/auxv/ {print $11" "$12" "$13}' # apache2ctl graceful # for pid in `pidof apache2`; do find /proc/$pid/fd -ls; done | awk '/auxv/ {print $11" "$12" "$13}' # apache2ctl graceful # for pid in `pidof apache2`; do find /proc/$pid/fd -ls; done | awk '/auxv/ {print $11" "$12" "$13}' .. etc This also happens with mpm-prefork. Strange though, there is no reference to 'auxv' in the sources other than a #define in readelf.h The filehandles might also be left open on other occations than a graceful restart, on my fairly loaded systems this quickly adds up. My nine webservers at this moment have a total of ~80000 filehandles opened for the procfs /proc/NN/auxv file
2013-05-08 07:38:32 Henk Jan Agteresch launchpad: status New Confirmed
2013-05-08 07:57:51 Henk Jan Agteresch affects launchpad php5 (Ubuntu)
2013-06-11 16:35:34 Forest Bond bug added subscriber Forest Bond
2013-06-11 20:22:44 Ondřej Surý affects php5 (Ubuntu) libjpeg-turbo (Ubuntu)
2013-06-11 20:23:11 Ondřej Surý marked as duplicate 1189939