[re] Java executables can abort trying to access a null pointer in a leaf function

Andrew Haley aph@redhat.com
Thu Feb 2 12:33:00 GMT 2006


tsuraan writes:
 > In April, 2000, the following code was posted to the java-gnats at
 > cygnus mailing list as a piece of code that causes a gcj compiled
 > program to abort rather than printing out the NullPointerException and
 > exiting:
 > 
 > public class NullPointer
 > {
 >   private int i = 5;
 > 
 >   public static void main(String[] args)
 >   {
 >     try
 >     {
 >       new NullPointer().foo(null);
 >     }
 >     catch (NullPointerException x)
 >     {
 >       System.out.println(x);
 >     }
 >   }
 > 
 >   void foo(NullPointer e)
 >   {
 >     e.i += 4;
 >   };
 > }
 > 
 > I'm getting the same result (program exit with abort) using
 > gcc-4.1-20051029 under FreeBSD 5.4.  This happens reliably on many
 > machines.  This code works fine using the same gcc source under Gentoo
 > Linux with a 2.6.x kernel, so I assume FreeBSD is handling things a
 > bit differently and causing the abort.

I just realized that no-one has ever attempted to port the signal
handling layer to FreeBSD.  On that platform you must compile with
-fcheck-references.

As far as I can see, configure.host in libjava is wrong: It should
contain the line 

CHECKREFSPEC=-fcheck-references

under 

*-*-freebsd*

Andrew.



More information about the Java mailing list