Bug#745921: nginx: http push has a unix socket fd leak on reloads

2014-04-29 Thread Christos Trochalakis

forwarded 745921 https://github.com/slact/nginx_http_push_module/issues/90
tags 745921 + upstream
thanks

On Sat, Apr 26, 2014 at 03:39:12PM +0100, Alexander Clouter wrote:

Package: nginx
Version: 1.4.6-1~bpo70+1
Severity: important
Tags: upstream

Dear Maintainer,

We are using nginx-extras (wheezy, {squeeze,wheezy}-backports) and have noticed
that on reload there are unix socket FD leaks (in our environment we reload
regularly).

By recompiling and pruning out the modules used, I was able to drill the
problem down the the nginx-http-push module; not a surprise as it is the only
one that calls socketpair(AF_UNIX).

First thing I did was drop in the latest version (0.712, Debian has 0.692) and
recompile, unfortunately it did not fix anything.



Let's wait for upstream before digging it further. Thank you for the bug
report.


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#745921: nginx: http push has a unix socket fd leak on reloads

2014-04-26 Thread Alexander Clouter
Package: nginx
Version: 1.4.6-1~bpo70+1
Severity: important
Tags: upstream

Dear Maintainer,

We are using nginx-extras (wheezy, {squeeze,wheezy}-backports) and have noticed
that on reload there are unix socket FD leaks (in our environment we reload
regularly).

By recompiling and pruning out the modules used, I was able to drill the 
problem down the the nginx-http-push module; not a surprise as it is the only 
one that calls socketpair(AF_UNIX).

First thing I did was drop in the latest version (0.712, Debian has 0.692) and 
recompile, unfortunately it did not fix anything.

To reproduce the problem, all you have to do is install
nginx-extras and reload:

# lsof -n -p $(pgrep -P1 nginx) | grep socket
nginx   1538 root3u  unix 0x88101ddc5080  0t0 2297044 socket
nginx   1538 root7u  unix 0x88201b7e7440  0t0 2296101 socket
nginx   1538 root8u  unix 0x88201b7e77c0  0t0 2296102 socket
nginx   1538 root9u  unix 0x88201b7e70c0  0t0 2296103 socket
nginx   1538 root   10u  unix 0x88201671fc00  0t0 2296104 socket
nginx   1538 root   11u  unix 0x88201671f880  0t0 2296105 socket
nginx   1538 root   12u  unix 0x88201671f500  0t0 2296106 socket
nginx   1538 root   13u  unix 0x88201671f180  0t0 2296107 socket
nginx   1538 root   14u  unix 0x8820159c5c40  0t0 2296108 socket
nginx   1538 root   15u  unix 0x88101ddc5780  0t0 2297045 socket
nginx   1538 root   16u  unix 0x88101d1cc080  0t0 2297046 socket
nginx   1538 root   17u  unix 0x88101d1ccb00  0t0 2297047 socket
nginx   1538 root   18u  unix 0x88101d1cc400  0t0 2297048 socket
nginx   1538 root   19u  unix 0x8810150b40c0  0t0 2297049 socket
nginx   1538 root   20u  unix 0x881015fd0c00  0t0 2297050 socket
nginx   1538 root   21u  unix 0x881015fd0880  0t0 2297051 socket

# /etc/init.d/nginx reload

# lsof -n -p $(pgrep -P1 nginx) | grep socket
nginx   1538 root4u  unix 0x88101e7fa3c0  0t0 2297070 socket
nginx   1538 root5u  unix 0x88101e7fa040  0t0 2297071 socket
nginx   1538 root7u  unix 0x88201b7e7440  0t0 2296101 socket
nginx   1538 root8u  unix 0x88201b7e77c0  0t0 2296102 socket
nginx   1538 root9u  unix 0x88201b7e70c0  0t0 2296103 socket
nginx   1538 root   10u  unix 0x88201671fc00  0t0 2296104 socket
nginx   1538 root   11u  unix 0x88201671f880  0t0 2296105 socket
nginx   1538 root   12u  unix 0x88201671f500  0t0 2296106 socket
nginx   1538 root   13u  unix 0x88201671f180  0t0 2296107 socket
nginx   1538 root   14u  unix 0x8820159c5c40  0t0 2296108 socket
nginx   1538 root   24u  unix 0x881015fd0500  0t0 2297062 socket
nginx   1538 root   25u  unix 0x881015fd0180  0t0 2297063 socket
nginx   1538 root   26u  unix 0x88101f849c40  0t0 2297064 socket
nginx   1538 root   27u  unix 0x88101f8498c0  0t0 2297065 socket
nginx   1538 root   28u  unix 0x88101f849540  0t0 2297066 socket
nginx   1538 root   29u  unix 0x88101f8491c0  0t0 2297067 socket
nginx   1538 root   30u  unix 0x88101e7faac0  0t0 2297068 socket
nginx   1538 root   31u  unix 0x88101e7fa740  0t0 2297069 socket
nginx   1538 root   32u  unix 0x88101d3dbb00  0t0 2297072 socket
nginx   1538 root   33u  unix 0x88101d3db780  0t0 2297073 socket
nginx   1538 root   34u  unix 0x88101d3db400  0t0 2297074 socket
nginx   1538 root   35u  unix 0x88101d3db080  0t0 2297075 socket
nginx   1538 root   36u  unix 0x8810189efb40  0t0 2297076 socket
nginx   1538 root   37u  unix 0x8810189ef7c0  0t0 2297077 socket

# for I in $(seq 1 20); do /etc/init.d/nginx reload; done
# lsof -n -p $(pgrep -P1 nginx) | grep socket | wc -l
104

# for I in $(seq 1 100); do /etc/init.d/nginx reload; done
# lsof -n -p $(pgrep -P1 nginx) | grep socket | wc -l
456


You should notice that the number of open unix sockets increases; these unix 
sockets are what the master process uses to speak to its workers.

Marking this important as the last thing you want to do is run out of FD's :)

I tried digging around to fix it myself but came up empty handed, sorry.

Cheers

-- System Information:
Debian Release: 7.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.13-0.bpo.1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org