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 10:37AM
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
>

And with running gdb directly on nginx I was finally able to get a useful backtrace:
rogue nginx-0.8.14 # gdb ./objs/nginx
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"...
(gdb) set follow-fork-mode child
(gdb) run -c /tmp/nginx.conf -t
Starting program: /root/nginx-0.8.14/objs/nginx -c /tmp/nginx.conf -t

Program received signal SIGBUS, Bus error.
0x00017a88 in ngx_palloc (pool=0xf9240, size=784) at src/core/ngx_palloc.c:126
126 m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);
(gdb) bt
#0 0x00017a88 in ngx_palloc (pool=0xf9240, size=784) at src/core/ngx_palloc.c:126
#1 0x000679dc in ngx_array_init (array=0xfab30, pool=0xf9240, n=4, size=196) at src/core/ngx_array.h:43
#2 0x00067ba4 in ngx_http_core_create_srv_conf (cf=0xff8991f8) at src/http/ngx_http_core_module.c:2799
#3 0x00066880 in ngx_http_core_server (cf=0xff8991f8, cmd=0xda138, dummy=0xf5db0) at src/http/ngx_http_core_module.c:2344
#4 0x000332a4 in ngx_conf_handler (cf=0xff8991f8, last=1) at src/core/ngx_conf_file.c:393
#5 0x00032d14 in ngx_conf_parse (cf=0xff8991f8, filename=0x0) at src/core/ngx_conf_file.c:243
#6 0x0005e008 in ngx_http_block (cf=0xff8991f8, cmd=0xd9e80, conf=0xf59b8) at src/http/ngx_http.c:241
#7 0x000332a4 in ngx_conf_handler (cf=0xff8991f8, last=1) at src/core/ngx_conf_file.c:393
#8 0x00032d14 in ngx_conf_parse (cf=0xff8991f8, filename=0xf5308) at src/core/ngx_conf_file.c:243
#9 0x0002ee4c in ngx_init_cycle (old_cycle=0xff8992f0) at src/core/ngx_cycle.c:262
#10 0x00013edc in main (argc=4, argv=0xff8994d4) at src/core/nginx.c:317
(gdb) p *p
Cannot access memory at address 0x782d6a61
(gdb)
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: 178
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