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

David Daney ddaney@avtrex.com
Wed Feb 1 22:02:00 GMT 2006


tsuraan wrote:
> 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.

Does this thing use DWARF based exception handling?

If so my guess would be a problem with MAKE_THROW_FRAME on this platfrom.

If making the first statement of foo something other than dereferencing 
the null pointer (like increment a static int) fixes the problem then I 
would be even more confident about this.

David Daney.



More information about the Java mailing list