Welcome! Log In Create A New Profile

Advanced

Re: "bus error" on Linux Sparc

All files from this thread

File Name File Size   Posted by Date  
patch.sparc.linux.txt 783 bytes open | download Igor Sysoev 09/29/2009 Read message
patch.sparc.linux1.txt 1.2 KB open | download Igor Sysoev 09/30/2009 Read message
September 09, 2009 07:42AM
Igor Sysoev Wrote:
-------------------------------------------------------
> On Wed, Sep 09, 2009 at 06:25:15AM -0400, dev-zero
> wrote:
>
> > Igor Sysoev Wrote:
> >
> --------------------------------------------------
> -----
> > > On Wed, Sep 09, 2009 at 05:27:47AM -0400,
> dev-zero
> > > wrote:
> > >
> > > > Igor Sysoev Wrote:
> > > >
> > >
> --------------------------------------------------
> > > -----
> > > > > On Tue, Sep 08, 2009 at 10:34:58AM -0400,
> > > dev-zero
> > > > > wrote:
> > > > >
> > > > > > Hi everyone
> > > > > >
> > > > > > When I try to start nginx-0.8.14 on a
> > > > > Sparc-Linux I get a "Bus Error":
> > > > > > # nginx -c /etc/nginx/nginx.conf
> > > > > > Bus error
> > > > > >
> > > > > > With 'strace' I was able to track it
> down a
> > > > > little:
> > > > > > [...]
> > > > > > open("/etc/nginx/nginx.conf",
> > > > > O_RDONLY|O_LARGEFILE) = 4
> > > > > > fstat64(4, {st_mode=S_IFREG|0644,
> > > st_size=1610,
> > > > > ...}) = 0
> > > > > > pread(4, Bus error
> > > > > >
> > > > > > Now, according to that I think the error
> > > might
> > > > > be in ngx_read_file where a u_char* is
> passed
> > > as 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
> > >
> > > Could you rebuild nginx with
> > > CFLAGS="-DNGX_ALIGNMENT=16 ..."
> >
> > Done. Did not help, same result:
> > # nginx -c /etc/nginx/nginx.conf -t
> > Bus error (core dumped)
>
> If the bus error is at src/core/ngx_palloc.c:126
> again, then:
>
> bt
> p *p

To make sure it isn't my CFLAGS or LDFLAGS I built it from the a freshly unpacked tarball with the following options (btw, not all options seem to trigger the bug equally often):

# CFLAGS="-DNGX_ALIGNMENT=16 -mcpu=v9 -O -pipe -ggdb" ./configure --prefix=/usr --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx.pid --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --with-md5-asm --with-sha1-asm --with-rtsig_module --with-select_module --with-poll_module --with-file-aio --with-ipv6 --with-http_ssl_module --without-pcre --with-http_addition_module --with-http_dav_module --with-http_gzip_static_module --without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_map_module --without-http_referer_module --without-http_rewrite_module --without-http_proxy_module --without-http_memcached_module --without-http_limit_zone_module --without-http_limit_req_module --without-http_upstream_ip_hash_module
[...]
# make
[...]
# ./objs/nginx -c /etc/nginx/nginx.conf -t
Bus error (core dumped)
# gdb ./objs/nginx core
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-unknown-linux-gnu"...
Reading symbols from /lib/libcrypt.so.1...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /usr/lib/libssl.so.0.9.8...done.
Loaded symbols for /usr/lib/libssl.so.0.9.8
Reading symbols from /usr/lib/libcrypto.so.0.9.8...done.
Loaded symbols for /usr/lib/libcrypto.so.0.9.8
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/libz.so.1...done.
Loaded symbols for /lib/libz.so.1
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_compat.so.2...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libnss_nis.so.2...done.
Loaded symbols for /lib/libnss_nis.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Core was generated by `./objs/nginx -c /etc/nginx/nginx.conf -t'.
Program terminated with signal 10, Bus error.
[New process 28774]
#0 ngx_palloc (pool=0xa7ff8, size=0) at src/core/ngx_palloc.c:126
126 m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);
(gdb) p *p
Cannot access memory at address 0x61746f6d
(gdb)

Maybe this gives another hint:
# ./objs/nginx -c /etc/nginx/nginx.conf -t
Bus error (core dumped)
# ./objs/nginx -c /tmp/nginx.conf -t
the configuration file /tmp/nginx.conf syntax is ok
[warn]: 8192 worker_connections are more than open file resource limit: 1024
configuration file /tmp/nginx.conf test is successful
# ./objs/nginx -t
the configuration file /etc/nginx/nginx.conf syntax is ok
[warn]: 8192 worker_connections are more than open file resource limit: 1024
configuration file /etc/nginx/nginx.conf test is successful

For the same configuration file.
Subject Author Posted

"bus error" on Linux Sparc

dev-zero September 08, 2009 10:34AM

Re: "bus error" on Linux Sparc

Igor Sysoev September 08, 2009 10:58AM

Re: "bus error" on Linux Sparc

dev-zero September 09, 2009 05:27AM

Re: "bus error" on Linux Sparc

Igor Sysoev September 09, 2009 06:00AM

Re: "bus error" on Linux Sparc

dev-zero September 09, 2009 06:25AM

Re: "bus error" on Linux Sparc

Igor Sysoev September 09, 2009 07:00AM

Re: "bus error" on Linux Sparc

dev-zero September 09, 2009 07:42AM

Re: "bus error" on Linux Sparc

dev-zero September 09, 2009 10:37AM

Re: "bus error" on Linux Sparc

marcusramberg September 26, 2009 08:38PM

Re: "bus error" on Linux Sparc

Igor Sysoev September 29, 2009 04:08AM

Re: "bus error" on Linux Sparc Attachments

Igor Sysoev September 29, 2009 04:16PM

Re: "bus error" on Linux Sparc Attachments

Igor Sysoev September 30, 2009 12:54AM

Re: "bus error" on Linux Sparc

Peter A Leonov September 30, 2009 02:46AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 294
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready