[Patch] nginx to use libatomic_ops

Igor Sysoev is at rambler-co.ru
Tue Sep 29 12:21:54 MSD 2009


On Fri, Sep 25, 2009 at 09:46:33PM +0200, W-Mark Kubacki wrote:

> Dear developers,
> 
> I have experienced SEGFAULTs on ARM using fastcgi and discovered it
> compiles with "NGX_HAVE_ATOMIC_OPS 0" on 'other' architectures than
> x86, amd64, sparc and the such defined in src/os/unix/ngx_atomic.h.
> 
> Therefore I'd like to contribute the patch linked below [1], which
> introduces configure option "--with-libatomic" and which makes nginx
> use atomic operations of that library on these 'other' architectures.
> For more information on the library please see [2]. (Indeed, this does
> not result in additional runtime dependencies and the atomic ops
> compile to less code than those of newer GCC versions [3].)
> 
> --with-libatomic compiles on ARM, does no SEGFAULT, and yields higher
> requests per second than with the otherwise used lock file.
> 
> The option is disabled by default, and even if enabled still used as
> last resort. I hope that after a brief review (I have little
> experience with configure scripts) you can integrate it in the next
> release.
> 
> --
> W-Mark Kubacki
> http://mark.ossdl.de/
> 
> [1] https://svn.hurrikane.de/all/ossdl/www-servers/nginx/files/nginx-0.8.16-libatomic.patch
> [2] http://www.hpl.hp.com/research/linux/atomic_ops/
>     http://bdwgc.cvs.sourceforge.net/viewvc/bdwgc/bdwgc/libatomic_ops-1.2/
> [3] http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
>     for gcc 4.1.0 and later

Thank you for the patch and information about gcc 4.1.
I'm going to add gcc builtins, since they are slighty lesser than
my code at least on x86.
I'm not sure should libatomic be added, since gcc 4.1+ is common compiler
these days.
Could you show backtrace of the segfault ? I could not reproduce it
on x86 with disabled atomic ops.


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list