java.lang.Thread.start() doesn't work?

Lars Andersen lars@rimfaxe.com
Fri Apr 19 07:33:00 GMT 2002


I'm running on the latest cvs-checkout on x86 linux. (one day old)
I can compile and run rather large and complex java-programs with gcj, 
but :
I can't make java.lang.Thread.start() work!
Here is an trivial example (More or less copied from the jdk1.3.1 
javadoc on java.lang.Thread :
 >>>
public class TestThread extends Thread
{
 public TestThread()
 {
 }
 
 public synchronized void start()
 {
 super.start(); 
 }
 public void run()
 {
 for (int i=0; i<1000000000; i++) { if (i%10000000==0) 
System.out.print("."); }
 }
 
 public static void main(String args[])
 {
 TestThread p = new TestThread();
 new Thread(p).start();
 }
 
}
<<<
Needless to say, this code runs fine with sun jdk.
Compiled with gcj using :
gcj TestThread.java --main=TestThread
When running the resulting binary it produces the following output :
Exception in thread "main" java.lang.InternalError: Thread.start called 
but threads not available
 at 0x40266270: java.lang.Throwable.Throwable(java.lang.String) 
(/usr/local/lib/libgcj.so.3)
 at 0x402551f6: java.lang.Error.Error(java.lang.String) 
(/usr/local/lib/libgcj.so.3)
 at 0x40266606: 
java.lang.VirtualMachineError.VirtualMachineError(java.lang.String) 
(/usr/local/lib/libgcj.so.3)
 at 0x40257396: 
java.lang.InternalError.InternalError(java.lang.String) 
(/usr/local/lib/libgcj.so.3)
 at 0x403d4928: _Jv_ThreadStart(java.lang.Thread, int, void 
()(java.lang.Thread)) (/usr/local/lib/libgcj.so.3)
 at 0x40247f51: java.lang.Thread.start() (/usr/local/lib/libgcj.so.3)
 at 0x0804906e: ?? (/home/gb/rpm/BUILD/glibc-2.2.4/csu/init.c:0)
 at 0x4023c728: gnu.gcj.runtime.FirstThread.call_main() 
(/usr/local/lib/libgcj.so.3)
 at 0x402c5268: gnu.gcj.runtime.FirstThread.run() 
(/usr/local/lib/libgcj.so.3)
 at 0x40247ebc: _Jv_ThreadRun(java.lang.Thread) 
(/usr/local/lib/libgcj.so.3)
 at 0x40221464: _Jv_RunMain(java.lang.Class, byte const, int, byte 
const, boolean) (/usr/local/lib/libgcj.so.3)
 at 0x4022158d: JvRunMain (/usr/local/lib/libgcj.so.3)
 at 0x08048dd4: ?? (/home/gb/rpm/BUILD/glibc-2.2.4/csu/init.c:0)
 at 0x40609280: __libc_start_main (/lib/libc.so.6)
 at 0x08048cb1: _start (??:0)
Since java.lang.Thread is in libgcj, I would expect this code to work?
/Lars Andersen 


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /