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

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


tsuraan wrote:
>>Does this thing use DWARF based exception handling?
> 
> 
> I'm not sure what that means, but it looks like FreeBSD since 3.x have
> used DWARF.  I'm on x86, so it's pretty standard hardware.
> 
> 
>>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.
>>
> 
> 
> Changing the code to:
> 
> public class NullPointer
> {
>   private int i = 5;
>   private static int j = 10;
> 
>   public static void main(String[] args)
>   {
>     try
>     {
>       new NullPointer().foo(null);
>     }
>     catch (NullPointerException x)
>     {
>       System.out.println(x);
>     }
>   }
> 
>   void foo(NullPointer e)
>   {
>     NullPointer.j += 5;
>     e.i += 4;
>   };
> }
> 
> and (from Bryce's suggestion) changing the compile line to:
> 
> /opt/gcc-4.1/bin/gcj -fnon-call-exceptions -o nullpointer
> NullPointer.java --main=NullPointer
> 
> Assuming that's what was desired, running the program still results in
> "Abort trap (core dumped)". 

Look at the bright side here.  At least you have a core file.  Now you 
can load this thing into gdb and get a stacktrace.

David Daney



More information about the Java mailing list