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