Problems with 0.9.1 on not so recent Linux kernels.

António P. P. Almeida appa at perusio.net
Wed Dec 1 20:41:41 MSK 2010


On 1 Dez 2010 17h36 WET, mdounin at mdounin.ru wrote:

Hello Maxim,

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

I compiled in both machines running a 2.6.24. One is an amd64
architecture, so I have to recompile there, since my dev machines are
i386.

The other I compiled also. I rebuilt the package in each machine.

Only on Linode I installed the binary package without rebuilding.

Thanks,
--- appa




More information about the nginx mailing list