Problems with 0.9.1 on not so recent Linux kernels.
mdounin at mdounin.ru
Wed Dec 1 20:36:25 MSK 2010
On Wed, Dec 01, 2010 at 05:07:51PM +0000, António P. P. Almeida wrote:
> I'm wondering if I'm the only one having this experience.
> I created my own .deb of 0.9.1 and installed on my dev machines and on
> Linode. Everything is working perfectly.
> In both cases I'm running a fairly recent kernel >= 2.6.32.
> Then I tried in machines running a 2.6.26 and there I had problems.
> When trying to access a site, one of the worker processes grabs 100%
> CPU utilization and the error file gets filed with:
> accept() failed (38: Function not implemented)
> It grows until exhausting the available disk space.
> No pages are served whatsoever. I'm guessing that this is an issue
> with a syscall that is missing in those kernel versions, but present
> in the newer versions.
> I reverted back to 0.8.53 in both machines.
> Anyone else experienced this? Igor, Maxim or other nginx
> insiders. Does 0.9.1 makes use of a Linux syscall available only in
> recent kernels?
0.9.1 tries to use accept4() on Linux if it's available. If you
compiled nginx on host with accept4() but run resulting binary on
an older kernel - it won't work.
As I already said in patch review, it's probably good idea to
provide runtime fallback to accept() in such situation.
More information about the nginx