Problems with 0.9.1 on not so recent Linux kernels.

Maxim Dounin mdounin at mdounin.ru
Wed Dec 1 20:36:25 MSK 2010


Hello!

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.

To Igor:

As I already said in patch review[1], it's probably good idea to 
provide runtime fallback to accept() in such situation.

[1] http://nginx.org/pipermail/nginx/2010-November/023524.html

Maxim Dounin



More information about the nginx mailing list