[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