[Patch] nginx to use libatomic_ops

Maxim Dounin mdounin at mdounin.ru
Fri Oct 9 15:25:06 MSD 2009


On Fri, Oct 09, 2009 at 11:57:24AM +0200, W-Mark Kubacki wrote:

> 2009/10/8 Igor Sysoev <is at rambler-co.ru>:
> > On Tue, Sep 29, 2009 at 12:26:43PM +0200, W-Mark Kubacki wrote:
> >
> >> [...]
> >> What do you think about the compromise using GCC builtins if
> >> --with-libatomic is not set?
> >> Only architectures not covered by the #ifs would be affected and you
> >> could remove lock_file code entirely in future.
> >
> > On i386/amd64 gcc builtins are just inlines and do not require libgcc.
> > As to libatomic, I'm not sure now. I prefer to use complex libraries
> > such as OpenSSL, zlib, etc.
> On x86/amd64 the shipped assembler code works fine, and my libatomic
> patch was intended for 'other' architectures.
> Despite of the latter I believe reinventing the wheel (as did php-fpm)
> is no good engineering - and you need to maintain that code yourself
> rather than have the 'community' do that for you (and other projects).
> Unfortunately I don't know the "complex" libraries good enough to tell
> whether they contain atomic ops nor whether they export it.

The idea is that for simple and rarely changing things like atomic 
ops it's better to have them in-place instead of in external 
library.  As external library may change, broke, disappear and so 
on, as a result requiring much more attention then simple in-place 

Note well: I believe the actual problem isn't atomic ops that 
isn't here.  By design nginx should work without atomic ops.  The 
real problem is SIGSEGV you see without them.  It should be fixed, 
but unfortunately we have no hardware to reproduce the problem.

Maxim Dounin

More information about the nginx mailing list