During a make check on Solaris 10/x86, make check in boehm-gc fails (which
unfortunately goes almost unnoticed since the failure is not included in
mail-report.log, cf. PR libgcj/11412):

/bin/ksh: 2246 Segmentation Fault
FAIL: gctest
===================
1 of 1 tests failed
===================
make[3]: *** [check-TESTS] Error 1

Running the test manually with LD_LIBRARY_PATH set so libgcc_s.so.1 is
found, one gets one of several possible results:

% LD_LIBRARY_PATH=../../gcc ./gctest 
Apparently failed to mark form some function arguments.
Perhaps GC_push_regs was configured incorrectly?
Test failed
Segmentation Fault
% LD_LIBRARY_PATH=../../gcc ./gctest 
Segmentation Fault
% LD_LIBRARY_PATH=../../gcc ./gctest 
Apparently failed to mark form some function arguments.
Perhaps GC_push_regs was configured incorrectly?
Test failed
Abort

pstack core reveals e.g. (for a run with a plain SEGV):

core 'core' of 10995:   gctest
-----------------  lwp# 1 / thread# 1  --------------------
 bff0d20b __lwp_park (bfe52000, 0, 806ca38, 0) + b
 bff06b5e slow_lock (bfe52000, 806ca38, 0) + 3d
 bff06c54 mutex_lock_impl (806ca38, 0) + ec
 bff06d60 mutex_lock (806ca38, 1, bffbc7b8, bff9e2a6, 806ca38, 806cbac) + 1a
 bff9e2ee GC_malloc (c, 0, 8047628, 80531b6, 0, 8051624) + 56
 080531de run_one_test (8047650, 8051c29, 8064378, 8064904, 0, 805387e) + 382
 08053733 main     (1, 8047688, 8047690) + 83
 08051b04 _start   (1, 80477a0, 0, 80477a7, 804781c, 8047909) + 80
-----------------  lwp# 2 / thread# 2  --------------------
 bff0df17 __lwp_wait (0, bfe29f78) + 7
 bff0a180 _thrp_join (0, bfe29fc4, bfe29fc8, 1) + 5a
 bff0a2c2 thr_join (0, bfe29fc4, bfe29fc8, 806ca38, 0, bfe29fc8) + 20
 bffa600b GC_thr_daemon (0) + 33
 bff0cebf _thr_setup (bfe52400) + 4e
 bff0d1b0 _lwp_start (bfe52400, 0, 0, bfe29ff8, bff0d1b0, bfe52400)
-----------------  lwp# 3 / thread# 3  --------------------
 bffa5d58 GC_my_stack_limits (0, bffbc904, 0, 0, 0, 0) + 2c
 bffa5e7d GC_old_stacks_are_fresh (bffb92b8, bffa545c, bfffe000, 806ca58, 
bffc8eb8, bffb9adc) + c1
 bffa35ed GC_read_dirty (40, bffb92b8, 81cded8, bff99084, 809b000, 0) + 16d
 bff9f435 GC_initiate_gc (809b000, 0, 81cdee8, bff9dae2, 8303000, 8313000) + 79
 bff99084 GC_stopped_mark (bff98de4, bffb92b8, 81cdf18, bff998df) + 64
 bff998f4 GC_try_to_collect_inner (bff98de4, 0, 81cdf48, bff99a91, bff99b3a, 
bff073ab) + 9c
 bff99ace GC_try_to_collect (bff98de4, bff073ab, bff0d23b, 0) + 6a
 bff99b3a GC_gcollect (0, 0, 0, 0, 0, 0) + 1e
 08053174 run_one_test (bff0b838, bff35000, 81cdfec, bff0cebf, 0, 0) + 318
 080536ab thr_run_one_test (0) + b
 bff0cebf _thr_setup (bfd10000) + 4e
 bff0d1b0 _lwp_start (0, 0, 0, 0, 0, 0)
-----------------  lwp# 4 / thread# 4  --------------------
 bff0d20b __lwp_park (bfd10400, 0, 806ca38, 0) + b
 bff06b5e slow_lock (bfd10400, 806ca38, 0) + 3d
 bff06c54 mutex_lock_impl (806ca38, 0) + ec
 bff06d60 mutex_lock (806ca38, bffb92b8, 82f0f48, bff99a91) + 1a
 bff99aa0 GC_try_to_collect (bff98de4, 8052d84, 82f0fc8, 805316c) + 3c
 bff99b3a GC_gcollect (0, 0, 0, 0, 0, 0) + 1e
 08053174 run_one_test (bff0b838, bff35000, 82f0fec, bff0cebf, 0, 0) + 318
 080536ab thr_run_one_test (0) + b
 bff0cebf _thr_setup (bfd10400) + 4e
 bff0d1b0 _lwp_start (0, 0, 0, 0, 0, 0)

Some info on this failure can also be found in

http://www.hpl.hp.com/hosted/linux/mail-archives/gc/2005-March/000767.html

and a couple of other postings on the [EMAIL PROTECTED] list.

To further investigate this, I've tried a couple of experiments with the
gc6.5 release.  Here's what I've found:

* With Sun cc 5.7, gctest fails like this:

Switched to incremental mode
Reading dirty bits from /proc
List reversal produced incorrect list - collector is broken
Test failed
Abort

  The same binary works without problems on s10_63 (an old beta of Solaris
  10, before amd64 integration), but fails on s10_70 (the first beta to
  integrate amd64 support) and on Solaris 10 FCS.

  Definining USE_GENERIC_PUSH_REGS in gcconfig.h doesn't change this.

* With Sun cc 5.7 and configuring with --enable-full-debug, gctest passes
  on all releases.  With the calls to GC_enable_incremental commented out
  in tests/test.c, gctest even passes without --enable-full-debug; setting
  GC_ENABLE_INCREMENTAL=1 in the environment causes it to fail again.

* With Sun cc 5.7 and configuring with --enable-full-debug
  --enable-threads=posix, gctest fails again, now with the same error as
  gcc (which has pthread support enabled by default).

* With gcc 3.4.3 and configuring with --disable-threads, I get the same
  failure as with cc (which defaults to --disable-threads).

* With gcc 3.4.3 and configuring with --disable-threads
  --enable-full-debug, gctest works.

Environment:
System: SunOS cumaru 5.10 Generic_Patch i86pc i386 i86pc
Architecture: i86pc

        
host: i386-pc-solaris2.10
build: i386-pc-solaris2.10
target: i386-pc-solaris2.10
configured with: /vol/gnu/src/gcc/gcc-dist/configure --prefix=/vol/gcc 
--with-local-prefix=/vol/gcc --disable-nls --with-gnu-as 
--with-as=/usr/sfw/bin/gas --with-gmp-dir=/vol/gnu/obj/gmp-4.1.3 
--with-mpfr-dir=/vol/gnu/obj/gmp-4.1.3 
--enable-languages=c,c++,f95,java,objc,ada --disable-libmudflap

How-To-Repeat:
Run gctest (boehm-gc make check) as described above.

-- 
           Summary: boehm-gc gctest fails on Solaris 10/x86
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: libgcj
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ro at techfak dot uni-bielefeld dot de
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i386-pc-solaris2.10
  GCC host triplet: i386-pc-solaris2.10
GCC target triplet: i386-pc-solaris2.10


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21940

Reply via email to