Why does this program cause an NPE in LibgcjInternalFinalizerThread ??

David Daney ddaney@avtrex.com
Tue Aug 19 21:41:00 GMT 2003


I am still trying to find the cause of a problem I am having.  This 
program seems to make libgcj unhappy.

Any Idea of why?


System configuration linux x86 (RedHat 7.1) w/ kernel 2.4.20 and gcj 3.3.1

------------------------------
import java.lang.ref.*;

public class Reftest {
     public void run(int id)
     {
         Reference r;
         for (int i=0; i<10000; i++) {
             r = new SoftReference("SoftReference Id "+id + ' ' + i);
             r = new WeakReference("WeakReference Id "+id + ' ' + i);
         }
         System.out.println("iteration "+id+" finishing");
     }

     public Reftest() {
     }

     public static void main(String[] args) {
         for (int i = 0; i<20; i++) {
             Reftest reftest1 = new Reftest();
             reftest1.run(i+1);
         }
     }
}
-----------------------------------
Results in:

[daney@dl proton]$ gcj --version
gcj (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


[daney@dl proton]$ gcj -g -O2 -o Reftest --main=Reftest Reftest.java

[daney@dl proton]$ ./Reftest
iteration 1 finishing
Exception in thread "LibgcjInternalFinalizerThread" 
java.lang.NullPointerException
    at GC_invoke_finalizers (/home/local/lib/libgcj.so.4.0.0)
    at _Jv_RunFinalizers() (/home/local/lib/libgcj.so.4.0.0)
    at gnu.gcj.runtime.FinalizerThread.runFinalizers() 
(/home/local/lib/libgcj.so.4.0.0)
    at gnu.gcj.runtime.FinalizerThread.run() 
(/home/local/lib/libgcj.so.4.0.0)
    at _Jv_ThreadRun(java.lang.Thread) (/home/local/lib/libgcj.so.4.0.0)
    at GC_start_routine (/home/local/lib/libgcj.so.4.0.0)
    at __clone (/lib/i686/libc-2.2.4.so)
iteration 2 finishing
iteration 3 finishing
iteration 4 finishing
iteration 5 finishing
iteration 6 finishing
iteration 7 finishing
iteration 8 finishing
iteration 9 finishing
iteration 10 finishing
iteration 11 finishing
iteration 12 finishing
iteration 13 finishing
iteration 14 finishing
iteration 15 finishing
iteration 16 finishing
iteration 17 finishing
iteration 18 finishing
iteration 19 finishing
iteration 20 finishing



More information about the Java mailing list