Subject: gcj threads/gc failure on 1.6ZC
To: None <current-users@netbsd.org>
From: Bart Locanthi <bart@sabl.com>
List: current-users
Date: 09/18/2003 16:55:54
After updating to *really* current (20030917 == 1.6ZC) and 
deinstalling/distclean/installing gcc-3.3.1, I am still unable to get 
very far with Threads under GCJ/NetBSD. This and vastly more complex 
examples work fine under Linux.

Program, execution, and stack trace below:

$ cat al.java
public class al extends Thread {
        int n;
        int m;
        public al(int i, int j) {
                n = i;
                m = j;
        }
        public void run() {
                for (int i = 0; i < n; i++)
                        System.err.println("hello world: "+m+": "+i);
        }
        static public void main(String arg[]) {
                int N = 10000;
                int M = 10;
                if (arg.length > 0)
                        N = Integer.parseInt(arg[0]);
                if (arg.length > 1)
                        M = Integer.parseInt(arg[1]);
                for (int j = 0; j < M; j++)
                        new al(N, j).start();
        }
}
$ echo $PATH
/usr/pkg/gcc3/bin:/usr/pkg/bin:/usr/local/bin:/usr/bin:/bin
$ echo $LD_LIBRARY_PATH
/usr/pkg/gcc3/lib:/usr/pkg/lib
$ gcj -o al -g --main=al al.java
$ ./al 100 10 # 10 threads counting to 100
hello world: 0: 0
hello world: 0: 1
hello world: 0: 2
...
hello world: 6: 47
hello world: 6: 48
Segmentation fault (core dumped)
$ gdb al al.core
GNU gdb 5.3
Copyright 2002 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 "i386--netbsdelf"...
Core was generated by `al'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/libexec/ld.elf_so...done.
Loaded symbols for /usr/libexec/ld.elf_so
Reading symbols from /usr/pkg/gcc3/lib/libgcc_s.so.1...done.
Loaded symbols for /usr/pkg/gcc3/lib/libgcc_s.so.1
Reading symbols from /usr/pkg/gcc3/lib/libgcj.so.4...done.
Loaded symbols for /usr/pkg/gcc3/lib/libgcj.so.4
Reading symbols from /usr/lib/libm387.so.0...done.
Loaded symbols for /usr/lib/libm387.so.0
Reading symbols from /usr/lib/libm.so.0...done.
Loaded symbols for /usr/lib/libm.so.0
Reading symbols from /usr/lib/libpthread.so.0...done.
Loaded symbols for /usr/lib/libpthread.so.0
Reading symbols from /usr/lib/libz.so.0...done.
Loaded symbols for /usr/lib/libz.so.0
Reading symbols from /usr/lib/libc.so.12...done.
Loaded symbols for /usr/lib/libc.so.12
Reading symbols from /usr/lib/i18n/libiconv_std.so.4.3...done.
Loaded symbols for /usr/lib/i18n/libiconv_std.so.4.3
Reading symbols from /usr/lib/i18n/libUTF8.so.4.3...done.
Loaded symbols for /usr/lib/i18n/libUTF8.so.4.3
Reading symbols from /usr/lib/i18n/libUTF1632.so.4.3...done.
Loaded symbols for /usr/lib/i18n/libUTF1632.so.4.3
Reading symbols from /usr/lib/i18n/libmapper_none.so.4.3...done.
Loaded symbols for /usr/lib/i18n/libmapper_none.so.4.3
#0  0x48563737 in GC_clear_stack_inner () from /usr/pkg/gcc3/lib/libgcj.so.4
(gdb) bt
#0  0x48563737 in GC_clear_stack_inner () from /usr/pkg/gcc3/lib/libgcj.so.4
#1  0x48563788 in GC_clear_stack_inner () from /usr/pkg/gcc3/lib/libgcj.so.4
#2  0x48563788 in GC_clear_stack_inner () from /usr/pkg/gcc3/lib/libgcj.so.4
...
#282 0x48563788 in GC_clear_stack_inner () from 
/usr/pkg/gcc3/lib/libgcj.so.4
#283 0x48563788 in GC_clear_stack_inner () from 
/usr/pkg/gcc3/lib/libgcj.so.4
#284 0x48563885 in GC_clear_stack () from /usr/pkg/gcc3/lib/libgcj.so.4
#285 0x48560a72 in GC_malloc_atomic () from /usr/pkg/gcc3/lib/libgcj.so.4
#286 0x48379d0b in _Jv_NewPrimArray () from /usr/pkg/gcc3/lib/libgcj.so.4
#287 0x4841f425 in 
gnu.gcj.runtime.StringBuffer.StringBuffer(java.lang.String)
    (this=0x80e1630, str=0x80779f0) at gnu/gcj/runtime/StringBuffer.java:179
#288 0x0804923e in al.run() (this=0x80adea0) at al.java:10
#289 0x483b368e in _Jv_ThreadRun(java::lang::Thread*) ()
   from /usr/pkg/gcc3/lib/libgcj.so.4
#290 0x4855b170 in really_start(void*) () from /usr/pkg/gcc3/lib/libgcj.so.4
#291 0x4895399e in pthread_create () from /usr/lib/libpthread.so.0