This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: boehm-gc test failure on sparc-linux
- From: Christian Jönsson <c dot christian dot joensson at telia dot com>
- To: "Boehm, Hans" <hans_boehm at hp dot com>
- Cc: 'Tom Tromey ' <tromey at redhat dot com>,'Christian Jönsson ' <c dot christian dot joensson at telia dot com>,gcc-bugs at gcc dot gnu dot org
- Date: Thu, 7 Feb 2002 08:51:32 +0100
- Subject: Re: boehm-gc test failure on sparc-linux
- References: <40700B4C02ABD5119F000090278766443BEF80@hplex1.hpl.hp.com>
On Wed, Feb 06, 2002 at 04:34:53PM -0800, Boehm, Hans wrote:
> This is a 32-bit binary?
>
> It would be interesting to know what happens if you download
>
> http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.1alpha3.tar.gz
>
> unpack it, and type "make test". Does it fail the same way?
>
> There are some general debugging hints for the collector in
>
> http://www.hpl.hp.com/personal/Hans_Boehm/gc/debugging.html
>
> Since I don't have access to a similar system, I will need more details ...
>
> Hans
Sure, this is a ss20 (sun4m), i.e., 32-bit.
I downloaded the test and gave it a go, seg fault.
Here's the log of make test:
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o if_mach ./if_mach.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o if_not_there ./if_not_there.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o threadlibs ./threadlibs.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o setjmp_test ./setjmp_t.c
./setjmp_t.c: In function `nested_sp':
./setjmp_t.c:57: warning: function returns address of local variable
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c ./tests/test.c
mv test.o tests/test.o
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o alloc.o alloc.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o reclaim.o reclaim.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o allchblk.o allchblk.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o misc.o misc.c
rm -f mach_dep.o
./if_mach MIPS IRIX5 as -o mach_dep.o ./mips_sgi_mach_dep.s
./if_mach MIPS RISCOS as -o mach_dep.o ./mips_ultrix_mach_dep.s
./if_mach MIPS ULTRIX as -o mach_dep.o ./mips_ultrix_mach_dep.s
./if_mach RS6000 "" as -o mach_dep.o ./rs6000_mach_dep.s
./if_mach POWERPC MACOSX as -o mach_dep.o ./powerpc_macosx_mach_dep.s
./if_mach SPARC SUNOS5 cc -c -o mach_dep.o ./sparc_mach_dep.S
./if_mach SPARC SUNOS4 as -o mach_dep.o ./sparc_sunos4_mach_dep.s
./if_mach SPARC OPENBSD as -o mach_dep.o ./sparc_sunos4_mach_dep.s
./if_mach SPARC NETBSD as -o mach_dep.o ./sparc_netbsd_mach_dep.s
./if_mach IA64 "" as -o ia64_save_regs_in_stack.o ./ia64_save_regs_in_stack.s
./if_mach IA64 "" cc -c -o mach_dep1.o -I./include ./mach_dep.c
./if_mach IA64 "" ld -r -o mach_dep.o mach_dep1.o ia64_save_regs_in_stack.o
./if_not_there mach_dep.o cc -c -I./include ./mach_dep.c
^^^^Starting command^^^^
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o os_dep.o os_dep.c
rm -f mark_rts.o
./if_mach ALPHA OSF1 cc -c -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -Wo,-notail ./mark_rts.c
./if_not_there mark_rts.o cc -c -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS ./mark_rts.c
^^^^Starting command^^^^
./mark_rts.c: In function `GC_approx_sp':
./mark_rts.c:337: warning: function returns address of local variable
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o headers.o headers.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o mark.o mark.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o obj_map.o obj_map.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o blacklst.o blacklst.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o finalize.o finalize.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o new_hblk.o new_hblk.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o dbg_mlc.o dbg_mlc.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o malloc.o malloc.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o stubborn.o stubborn.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o checksums.o checksums.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o solaris_threads.o solaris_threads.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o irix_threads.o irix_threads.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o linux_threads.o linux_threads.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o typd_mlc.o typd_mlc.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o ptr_chck.o ptr_chck.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o mallocx.o mallocx.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o solaris_pthreads.o solaris_pthreads.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o gcj_mlc.o gcj_mlc.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o specific.o specific.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o gc_dlopen.o gc_dlopen.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o backgraph.o backgraph.c
cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -c -o dyn_load.o dyn_load.c
echo > base_lib
rm -f dont_ar_1
./if_mach SPARC SUNOS5 touch dont_ar_1
./if_mach SPARC SUNOS5 ar rus gc.a alloc.o reclaim.o allchblk.o misc.o mach_dep.o os_dep.o mark_rts.o headers.o mark.o obj_map.o blacklst.o finalize.o new_hblk.o dbg_mlc.o malloc.o stubborn.o checksums.o solaris_threads.o irix_threads.o linux_threads.o typd_mlc.o ptr_chck.o mallocx.o solaris_pthreads.o gcj_mlc.o specific.o gc_dlopen.o backgraph.o dyn_load.o
./if_mach M68K AMIGA touch dont_ar_1
./if_mach M68K AMIGA ar -vrus gc.a alloc.o reclaim.o allchblk.o misc.o mach_dep.o os_dep.o mark_rts.o headers.o mark.o obj_map.o blacklst.o finalize.o new_hblk.o dbg_mlc.o malloc.o stubborn.o checksums.o solaris_threads.o irix_threads.o linux_threads.o typd_mlc.o ptr_chck.o mallocx.o solaris_pthreads.o gcj_mlc.o specific.o gc_dlopen.o backgraph.o dyn_load.o
./if_not_there dont_ar_1 ar ru gc.a alloc.o reclaim.o allchblk.o misc.o mach_dep.o os_dep.o mark_rts.o headers.o mark.o obj_map.o blacklst.o finalize.o new_hblk.o dbg_mlc.o malloc.o stubborn.o checksums.o solaris_threads.o irix_threads.o linux_threads.o typd_mlc.o ptr_chck.o mallocx.o solaris_pthreads.o gcj_mlc.o specific.o gc_dlopen.o backgraph.o dyn_load.o
^^^^Starting command^^^^
./if_not_there dont_ar_1 ranlib gc.a || cat /dev/null
^^^^Starting command^^^^
rm -f gctest
./if_mach SPARC DRSNX cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o gctest tests/test.o gc.a -lucb
./if_mach HP_PA HPUX cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o gctest tests/test.o gc.a -ldld `./threadlibs`
./if_mach M68K AMIGA cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -UGC_AMIGA_MAKINGLIB -o gctest tests/test.o gc.a `./threadlibs`
./if_not_there gctest cc -O -I./include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS -o gctest tests/test.o gc.a `./threadlibs`
^^^^Starting command^^^^
./setjmp_test
This appears to be a SPARC running LINUX
Stack appears to grow down, which is the default.
A good guess for STACKBOTTOM on this machine is 0xeffff000.
Note that this may vary between machines of ostensibly
the same architecture (e.g. Sun 3/50s and 3/80s).
On many machines the value is not fixed.
A good guess for ALIGNMENT on this machine is 4.
Generic mark_regs code may work
./gctest
make: *** [KandRtest] Segmentation fault
and a stack trace in gdb gives us this:
chj@fw:~/gc6.1alpha3$ gdb gctest
GNU gdb 5.1
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "sparc-linux"...(no debugging symbols found)...
(gdb) run
Starting program: /home/chj/gc6.1alpha3/gctest
(no debugging symbols found)...(no debugging symbols found)...
Program received signal SIGSEGV, Segmentation fault.
0x00016368 in GC_SysVGetDataStart ()
(gdb) bt
#0 0x00016368 in GC_SysVGetDataStart ()
Cannot access memory at address 0x901222b8
(gdb)
Anything more I can do?
/ChJ