Igor S. Wrote:
With ‘strace’ I was able to track it down a
void* as second argument for pread, which in turn
is probably a long and should therefore be aligned
on sparc.
Even if that is the actual problem I have no
idea how to fix it. Any ideas?
Could you create coredump and run
gdb /path/to/nginx /path/to/core
bt
Sure, here we go…
The first bug is a segfault I’ve been experiencing a lot when doing a
config check while the server is already running:
Core was generated by `/usr/sbin/nginx -c /etc/nginx/nginx.conf -t’.
Program terminated with signal 11, Segmentation fault.
#0 ngx_hash_add_key (ha=0xff82b270, key=0xf7ba5a4c, value=0xc960,
flags=75334) at src/core/ngx_hash.c:814
814 *name = *key;
#1 0x00000008 in ?? ()
(gdb)
And the coredump+gdb-bt from the bus error mentioned before:
Core was generated by `nginx -c /etc/nginx/nginx.conf -t’.
Program terminated with signal 10, Bus error.
#0 ngx_palloc (pool=0xa1230, size=784) at src/core/ngx_palloc.c:126
126 m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);
(gdb) bt
#0 ngx_palloc (pool=0xa1230, size=784) at src/core/ngx_palloc.c:126
#1 0x0003c608 in ngx_http_core_create_srv_conf (cf=0xffa87280) at
src/core/ngx_array.h:43
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)
And the original C/LDFLAGS I’ve been using to compile nginx:
CFLAGS="-O2 -mcpu=ultrasparc -pipe -ggdb"
LDFLAGS="-Wl,-O2,–hash-style=gnu,–sort-common,–as-needed"
Dropping the LDFLAGS didn’t help, also didn’t reducing -O2 to -O1 in
CFLAGS.
GCC version is: 4.3.2, glibc: 2.9_p20081201, kernel: 2.6.31-rc9
Thanks in advance for your help,
Cheers,
Tiziano
Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,5969,6078#msg-6078