gcj trunk - getAnnotations NullPointerException / segmentation fault

Hanno Meyer-Thurow h.mth@web.de
Sun Mar 4 21:02:00 GMT 2007


Hi list,
with latest fixes to Annotation code and String.format(...) patch I get
a NullPointerException / segmentation fault by running JUnit-4.2 tests.

I do not think that I get a testcase this time. So, if you are interested get
JUnit-4.2 source from http://downloads.sourceforge.net/junit/junit4.2.zip
and run 'ant dist' to compile and run tests.

To run the tests alone do:

	gij -classpath . org.junit.runner.JUnitCore org.junit.tests.AllTests

1) initializationError0(org.junit.tests.AllTests)
java.lang.NullPointerException
   at $Proxy0.annotationType(Unknown Source:0)
   at java.lang.Class.getAnnotations(Class.java:1277)
   at java.lang.Class.getAnnotation(Class.java:1255)
   at org.junit.internal.requests.ClassRequest.getRunnerClass(ClassRequest.java:32)
   at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:20)
   at org.junit.internal.requests.ClassesRequest.getRunner(ClassesRequest.java:21)
   at org.junit.runners.Suite.<init>(Suite.java:50)
   at org.junit.runners.Suite.<init>(Suite.java:36)
   at java.lang.reflect.Constructor.newInstance(natConstructor.cc:92)
   at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:23)
   at org.junit.internal.requests.ClassesRequest.getRunner(ClassesRequest.java:21)
   at org.junit.runner.JUnitCore.run(JUnitCore.java:109)
   at org.junit.runner.JUnitCore.run(JUnitCore.java:100)
   at org.junit.runner.JUnitCore.runMain(JUnitCore.java:81)
   at org.junit.runner.JUnitCore.main(JUnitCore.java:44)

Though, before I see only the segmentation fault I have to fix gdb:

	http://sourceware.org/ml/gdb-patches/2007-01/msg00561.html

Then, it throws a segmentation fault at:

Program received signal SIGSEGV, Segmentation fault.
0x00002b4aaac672ad in run_proxy (cif=0x2b4aad527fa0, rvalue=0x7fff01798510, args=0x7fff01798390, user_data=0x2b4aad527f70)
    at libjava/java/lang/reflect/natVMProxy.cc:318
318	    = _Jv_NewObjectArray (self->meth->parameter_types->length, &Object::class$, NULL);

I set a breakpoint there and see it stopping there 60+ times before it
throws the segmentation fault.

(gdb) bt
#0  0x00002b4aaac672ad in run_proxy (cif=0x2b4aad527fa0, rvalue=0x7fff01798510, args=0x7fff01798390, user_data=0x2b4aad527f70)
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libjava/java/lang/reflect/natVMProxy.cc:318
#1  0x00002b4aab431806 in ffi_closure_unix64_inner (closure=0x2b4aad527f70, rvalue=0x7fff01798510, reg_args=0x7fff01798460, argp=0x7fff01798530 "x\005J-J+")
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/ffi64.c:563
#2  0x00002b4aab431fc0 in ffi_closure_unix64 () at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/unix64.S:228
#3  0x00002b4aab0104b3 in java.lang.reflect.Method.getAnnotation(java.lang.Class)java.lang.annotation.Annotation (this=<value optimized out>, annoClass=0x2b4aad4a0578)
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libjava/java/lang/reflect/Method.java:421
#4  0x00002b4aab431e94 in ffi_call_unix64 () at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/unix64.S:73
#5  0x00002b4aab431d1c in ffi_call (cif=0x2b4aad4e8ac8, fn=0x2b4aab010450 <java.lang.reflect.Method.getAnnotation(java.lang.Class)java.lang.annotation.Annotation>, rvalue=0x7fff017987e0, 
    avalue=0x7fff01798670) at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/ffi64.c:428
#6  0x00002b4aab4311c1 in ffi_java_raw_call (cif=0x2b4aad4e8ac8, fn=0x2b4aab010450 <java.lang.reflect.Method.getAnnotation(java.lang.Class)java.lang.annotation.Annotation>, rvalue=0x7fff017987e0, 
    raw=<value optimized out>) at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/java_raw_api.c:292
#7  0x00002b4aaac417e6 in _Jv_InterpMethod::run (retp=0x7fff01798a10, args=0x2b4aad4e8ab0, meth=0x2b4aad42b7e0)
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libjava/interpret-run.cc:480
#8  0x00002b4aab431285 in ffi_java_translate_args (cif=0x2b4aad4ddcf0, rvalue=0x7fff01798a10, avalue=0x7fff01798890, user_data=0x2b4aad4ddcb0)
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/java_raw_api.c:306
#9  0x00002b4aab431806 in ffi_closure_unix64_inner (closure=0x2b4aad4ddcb0, rvalue=0x7fff01798a10, reg_args=0x7fff01798960, argp=0x7fff01798a30 "\016")
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/ffi64.c:563
#10 0x00002b4aab431fc0 in ffi_closure_unix64 () at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/unix64.S:228
#11 0x00002b4aab431e94 in ffi_call_unix64 () at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/unix64.S:73
#12 0x00002b4aab431d1c in ffi_call (cif=0x2b4aad4e82e8, fn=0x2b4aad4ddcb0, rvalue=0x7fff01798c90, avalue=0x7fff01798b30)
    at /mnt/data/tmp/portage/dev-java/gcj-4.3.0_alpha20070302/work/gcc-4.3-20070302/libffi/src/x86/ffi64.c:428


Regards,
Hanno



More information about the Java mailing list