This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

SEGV


Hi,

after some frustrations with both blackdown's and gcj's jni, I compiled
libgcj / libgcjgc with symbols and immediatly run into SEGFAULTS:

1) gcc/libjava/prims.cc:153

  if (a->hash != b->hash)
      return false;
       
  and the debugger shows that a is zero:
  
<gdb>
(gdb) run
Starting program: /home/joze/test

Program received signal SIGSEGV, Segmentation fault.
0x0809f657 in _Jv_equalUtf8Consts(_Jv_Utf8Const*, _Jv_Utf8Const*) (a=0x0, b=0x810ddb8) at ../../../gcc/libjava/prims.cc:153
153       if (a->hash != b->hash)
Current language:  auto; currently c++
(gdb) where
#0  0x0809f657 in _Jv_equalUtf8Consts(_Jv_Utf8Const*, _Jv_Utf8Const*) (a=0x0, b=0x810ddb8) at ../../../gcc/libjava/prims.cc:153
#1  0x08065d56 in _Jv_GetMethodLocal(java::lang::Class*, _Jv_Utf8Const*, _Jv_Utf8Const*) (klass=0x813f640, name=0x0, signature=0x0)
    at ../../../gcc/libjava/java/lang/natClass.cc:804
#2  0x08065c00 in java::lang::Class::initializeClass() (this=0x813f640) at ../../../gcc/libjava/java/lang/natClass.cc:759
#3  0x0810bff6 in _Jv_InitClass (klass=0x813f640) at ../../../gcc/libjava/java/lang/Class.h:266
#4  0x08065b8c in java::lang::Class::initializeClass() (this=0x814e360) at ../../../gcc/libjava/java/lang/natClass.cc:743
#5  0x0810bff6 in _Jv_InitClass (klass=0x814e360) at ../../../gcc/libjava/java/lang/Class.h:266
#6  0x0808f532 in java.lang.reflect.Modifier.isAbstract(int) (mod=1) at ../../../gcc/libjava/java/lang/reflect/Modifier.java:43
#7  0x080665ef in _Jv_PrepareConstantTimeTables(java::lang::Class*) (klass=0x814e360) at ../../../gcc/libjava/java/lang/natClass.cc:1074
#8  0x08065aa2 in java::lang::Class::initializeClass() (this=0x814e360) at ../../../gcc/libjava/java/lang/natClass.cc:708
#9  0x0810bff6 in _Jv_InitClass (klass=0x814e360) at ../../../gcc/libjava/java/lang/Class.h:266
#10 0x0808f532 in java.lang.reflect.Modifier.isAbstract(int) (mod=1) at ../../../gcc/libjava/java/lang/reflect/Modifier.java:43
#11 0x080665ef in _Jv_PrepareConstantTimeTables(java::lang::Class*) (klass=0x813f640) at ../../../gcc/libjava/java/lang/natClass.cc:1074
#12 0x08065aa2 in java::lang::Class::initializeClass() (this=0x813f640) at ../../../gcc/libjava/java/lang/natClass.cc:708
#13 0x0810bff6 in _Jv_InitClass (klass=0x813f640) at ../../../gcc/libjava/java/lang/Class.h:266
#14 0x08065b8c in java::lang::Class::initializeClass() (this=0x8144ea0) at ../../../gcc/libjava/java/lang/natClass.cc:743
#15 0x0810bff6 in _Jv_InitClass (klass=0x8144ea0) at ../../../gcc/libjava/java/lang/Class.h:266
#16 0x0809fed2 in _Jv_AllocObject (klass=0x8144ea0, size=34) at ../../../gcc/libjava/prims.cc:346
#17 0x0806b856 in _Jv_AllocPtrFreeObject(java::lang::Class*, int) (klass=0x8144ea0, sz=34) at ../../../gcc/libjava/gcj/javaprims.h:387
#18 0x0806a082 in _Jv_AllocString (len=7) at ../../../gcc/libjava/java/lang/natString.cc:399
#19 0x0810b6f5 in JvAllocString(int) (sz=7) at ../../../gcc/libjava/gcj/cni.h:47
#20 0x08069d58 in _Jv_NewStringUtf8Const(_Jv_Utf8Const*) (str=0x811d39c) at ../../../gcc/libjava/java/lang/natString.cc:284
#21 0x080676e9 in _Jv_PrepareCompiledClass(java::lang::Class*) (klass=0x814e360) at ../../../gcc/libjava/java/lang/natClassLoader.cc:269
#22 0x08065a8e in java::lang::Class::initializeClass() (this=0x814e360) at ../../../gcc/libjava/java/lang/natClass.cc:703
#23 0x0810bff6 in _Jv_InitClass (klass=0x814e360) at ../../../gcc/libjava/java/lang/Class.h:266
#24 0x0808f532 in java.lang.reflect.Modifier.isAbstract(int) (mod=17) at ../../../gcc/libjava/java/lang/reflect/Modifier.java:43
#25 0x080665ef in _Jv_PrepareConstantTimeTables(java::lang::Class*) (klass=0x8144ea0) at ../../../gcc/libjava/java/lang/natClass.cc:1074
#26 0x08065aa2 in java::lang::Class::initializeClass() (this=0x8144ea0) at ../../../gcc/libjava/java/lang/natClass.cc:708
#27 0x0810bff6 in _Jv_InitClass (klass=0x8144ea0) at ../../../gcc/libjava/java/lang/Class.h:266
#28 0x0809fed2 in _Jv_AllocObject (klass=0x8144ea0, size=32) at ../../../gcc/libjava/prims.cc:346
#29 0x0806b856 in _Jv_AllocPtrFreeObject(java::lang::Class*, int) (klass=0x8144ea0, sz=32) at ../../../gcc/libjava/gcj/javaprims.h:387
#30 0x0806a082 in _Jv_AllocString (len=6) at ../../../gcc/libjava/java/lang/natString.cc:399
#31 0x0810b6f5 in JvAllocString(int) (sz=6) at ../../../gcc/libjava/gcj/cni.h:47
#32 0x08069d58 in _Jv_NewStringUtf8Const(_Jv_Utf8Const*) (str=0x8112d3e) at ../../../gcc/libjava/java/lang/natString.cc:284
#33 0x080676e9 in _Jv_PrepareCompiledClass(java::lang::Class*) (klass=0x8144ea0) at ../../../gcc/libjava/java/lang/natClassLoader.cc:269
#34 0x08065a8e in java::lang::Class::initializeClass() (this=0x8144ea0) at ../../../gcc/libjava/java/lang/natClass.cc:703
#35 0x0810bff6 in _Jv_InitClass (klass=0x8144ea0) at ../../../gcc/libjava/java/lang/Class.h:266
#36 0x0809fed2 in _Jv_AllocObject (klass=0x8144ea0, size=20) at ../../../gcc/libjava/prims.cc:346
#37 0x0806b856 in _Jv_AllocPtrFreeObject(java::lang::Class*, int) (klass=0x8144ea0, sz=20) at ../../../gcc/libjava/gcj/javaprims.h:387
#38 0x0806a082 in _Jv_AllocString (len=0) at ../../../gcc/libjava/java/lang/natString.cc:399
#39 0x0810b6f5 in JvAllocString(int) (sz=0) at ../../../gcc/libjava/gcj/cni.h:47
#40 0x08069d58 in _Jv_NewStringUtf8Const(_Jv_Utf8Const*) (str=0x810dd9e) at ../../../gcc/libjava/java/lang/natString.cc:284
#41 0x080676e9 in _Jv_PrepareCompiledClass(java::lang::Class*) (klass=0x813f480) at ../../../gcc/libjava/java/lang/natClassLoader.cc:269
#42 0x08065a8e in java::lang::Class::initializeClass() (this=0x813f480) at ../../../gcc/libjava/java/lang/natClass.cc:703
#43 0x0810bff6 in _Jv_InitClass (klass=0x813f480) at ../../../gcc/libjava/java/lang/Class.h:266
#44 0x0809fed2 in _Jv_AllocObject (klass=0x813f480, size=96) at ../../../gcc/libjava/prims.cc:346
#45 0x0810b324 in JvAllocObject(java::lang::Class*) (cls=0x813f480) at ../../../gcc/libjava/gcj/cni.h:26
#46 0x08067cce in _Jv_NewClass(_Jv_Utf8Const*, java::lang::Class*, java::lang::ClassLoader*) (name=0x81b7fd0, superclass=0x813f640, loader=0x0)
    at ../../../gcc/libjava/java/lang/natClassLoader.cc:540
#47 0x08067f4e in _Jv_NewArrayClass(java::lang::Class*, java::lang::ClassLoader*, _Jv_VTable*) (element=0x81996c0, loader=0x0, array_vtable=0x819968c)
    at ../../../gcc/libjava/java/lang/natClassLoader.cc:621
#48 0x0810bfd2 in java::lang::Class::Class(java::lang::Object*, char, int, java::lang::Object*) (this=0x81996c0, cname=0x8120568, sig=66 'B', len=1,
    array_vtable=0x819968c) at ../../../gcc/libjava/java/lang/Class.h:240
#49 0x080a0fb3 in __static_initialization_and_destruction_0(int, int) (__initialize_p=1, __priority=65535) at ../../../gcc/libjava/include/jvm.h:567
#50 0x080a11a8 in _GLOBAL__I__Jv_Compiler_Properties () at ../../../gcc/libjava/prims.cc:46
#51 0x0810b28f in __do_global_ctors_aux () at ../../../gcc/libjava/java/net/natPlainSocketImpl.cc:67
#52 0x08049c2e in _init ()
#53 0x40052621 in __libc_start_main () from /lib/libc.so.6
(gdb) b _Jv_equalUtf8Consts
Breakpoint 1 at 0x809f640: file ../../../gcc/libjava/prims.cc, line 151.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/joze/test

Breakpoint 1, _Jv_equalUtf8Consts(_Jv_Utf8Const*, _Jv_Utf8Const*) (a=0x0, b=0x810ddb8) at ../../../gcc/libjava/prims.cc:151
151       if (a == b)
(gdb) p a
$1 = (Utf8Const *) 0x0
(gdb) p b
$2 = (Utf8Const *) 0x810ddb8
</gdb>


   I'd recommend to put two lines above 153:

+  if (!a || !b)
+    return false;



2) trying again I get another SEGV in boehm-gc/gcj_mlc.c:125

<gdb>
(gdb) run
Starting program: /home/joze/test

Program received signal SIGSEGV, Segmentation fault.
0x080fe13b in GC_gcj_malloc (lb=34, ptr_to_struct_containing_descr=0x8144e74) at ../../../gcc/boehm-gc/gcj_mlc.c:125
125             op = *opp;
(gdb) where
#0  0x080fe13b in GC_gcj_malloc (lb=34, ptr_to_struct_containing_descr=0x8144e74) at ../../../gcc/boehm-gc/gcj_mlc.c:125
#1  0x0810c383 in _Jv_AllocObj(int, java::lang::Class*) (size=34, klass=0x8144ec0) at include/java-gc.h:37
#2  0x0809fef8 in _Jv_AllocObject (klass=0x8144ec0, size=34) at ../../../gcc/libjava/prims.cc:350
#3  0x0806b856 in _Jv_AllocPtrFreeObject(java::lang::Class*, int) (klass=0x8144ec0, sz=34) at ../../../gcc/libjava/gcj/javaprims.h:387
#4  0x0806a082 in _Jv_AllocString (len=7) at ../../../gcc/libjava/java/lang/natString.cc:399
#5  0x0810b705 in JvAllocString(int) (sz=7) at ../../../gcc/libjava/gcj/cni.h:47
#6  0x08069d58 in _Jv_NewStringUtf8Const(_Jv_Utf8Const*) (str=0x811d3bc) at ../../../gcc/libjava/java/lang/natString.cc:284
#7  0x080676e9 in _Jv_PrepareCompiledClass(java::lang::Class*) (klass=0x814e380) at ../../../gcc/libjava/java/lang/natClassLoader.cc:269
#8  0x08065a8e in java::lang::Class::initializeClass() (this=0x814e380) at ../../../gcc/libjava/java/lang/natClass.cc:703
#9  0x0810c006 in _Jv_InitClass (klass=0x814e380) at ../../../gcc/libjava/java/lang/Class.h:266
#10 0x0808f532 in java.lang.reflect.Modifier.isAbstract(int) (mod=17) at ../../../gcc/libjava/java/lang/reflect/Modifier.java:43
#11 0x080665ef in _Jv_PrepareConstantTimeTables(java::lang::Class*) (klass=0x8144ec0) at ../../../gcc/libjava/java/lang/natClass.cc:1074
#12 0x08065aa2 in java::lang::Class::initializeClass() (this=0x8144ec0) at ../../../gcc/libjava/java/lang/natClass.cc:708
#13 0x0810c006 in _Jv_InitClass (klass=0x8144ec0) at ../../../gcc/libjava/java/lang/Class.h:266
#14 0x0809fee6 in _Jv_AllocObject (klass=0x8144ec0, size=32) at ../../../gcc/libjava/prims.cc:348
#15 0x0806b856 in _Jv_AllocPtrFreeObject(java::lang::Class*, int) (klass=0x8144ec0, sz=32) at ../../../gcc/libjava/gcj/javaprims.h:387
#16 0x0806a082 in _Jv_AllocString (len=6) at ../../../gcc/libjava/java/lang/natString.cc:399
#17 0x0810b705 in JvAllocString(int) (sz=6) at ../../../gcc/libjava/gcj/cni.h:47
#18 0x08069d58 in _Jv_NewStringUtf8Const(_Jv_Utf8Const*) (str=0x8112d5e) at ../../../gcc/libjava/java/lang/natString.cc:284
#19 0x080676e9 in _Jv_PrepareCompiledClass(java::lang::Class*) (klass=0x8144ec0) at ../../../gcc/libjava/java/lang/natClassLoader.cc:269
#20 0x08065a8e in java::lang::Class::initializeClass() (this=0x8144ec0) at ../../../gcc/libjava/java/lang/natClass.cc:703
#21 0x0810c006 in _Jv_InitClass (klass=0x8144ec0) at ../../../gcc/libjava/java/lang/Class.h:266
#22 0x0809fee6 in _Jv_AllocObject (klass=0x8144ec0, size=20) at ../../../gcc/libjava/prims.cc:348
#23 0x0806b856 in _Jv_AllocPtrFreeObject(java::lang::Class*, int) (klass=0x8144ec0, sz=20) at ../../../gcc/libjava/gcj/javaprims.h:387
#24 0x0806a082 in _Jv_AllocString (len=0) at ../../../gcc/libjava/java/lang/natString.cc:399
#25 0x0810b705 in JvAllocString(int) (sz=0) at ../../../gcc/libjava/gcj/cni.h:47
#26 0x08069d58 in _Jv_NewStringUtf8Const(_Jv_Utf8Const*) (str=0x810ddbe) at ../../../gcc/libjava/java/lang/natString.cc:284
#27 0x080676e9 in _Jv_PrepareCompiledClass(java::lang::Class*) (klass=0x813f4a0) at ../../../gcc/libjava/java/lang/natClassLoader.cc:269
#28 0x08065a8e in java::lang::Class::initializeClass() (this=0x813f4a0) at ../../../gcc/libjava/java/lang/natClass.cc:703
#29 0x0810c006 in _Jv_InitClass (klass=0x813f4a0) at ../../../gcc/libjava/java/lang/Class.h:266
#30 0x0809fee6 in _Jv_AllocObject (klass=0x813f4a0, size=96) at ../../../gcc/libjava/prims.cc:348
#31 0x0810b334 in JvAllocObject(java::lang::Class*) (cls=0x813f4a0) at ../../../gcc/libjava/gcj/cni.h:26
#32 0x08067cce in _Jv_NewClass(_Jv_Utf8Const*, java::lang::Class*, java::lang::ClassLoader*) (name=0x81b7fd0, superclass=0x813f660, loader=0x0)
    at ../../../gcc/libjava/java/lang/natClassLoader.cc:540
#33 0x08067f4e in _Jv_NewArrayClass(java::lang::Class*, java::lang::ClassLoader*, _Jv_VTable*) (element=0x81996e0, loader=0x0, array_vtable=0x81996ac)
    at ../../../gcc/libjava/java/lang/natClassLoader.cc:621
#34 0x0810bfe2 in java::lang::Class::Class(java::lang::Object*, char, int, java::lang::Object*) (this=0x81996e0, cname=0x8120588, sig=66 'B', len=1,
    array_vtable=0x81996ac) at ../../../gcc/libjava/java/lang/Class.h:240
#35 0x080a0fc7 in __static_initialization_and_destruction_0(int, int) (__initialize_p=1, __priority=65535) at ../../../gcc/libjava/include/jvm.h:569
#36 0x080a11bc in _GLOBAL__I__Jv_Compiler_Properties () at ../../../gcc/libjava/prims.cc:46
#37 0x0810b29f in __do_global_ctors_aux () at ../../../gcc/libjava/java/net/natPlainSocketImpl.cc:67
#38 0x08049c2e in _init ()
#39 0x40052621 in __libc_start_main () from /lib/libc.so.6
(gdb) b GC_gcj_malloc
Breakpoint 1 at 0x80fe0fc: file ../../../gcc/boehm-gc/gcj_mlc.c, line 117.
(gdb) n

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) run
Starting program: /home/joze/test

Breakpoint 1, GC_gcj_malloc (lb=34, ptr_to_struct_containing_descr=0x8144e74) at ../../../gcc/boehm-gc/gcj_mlc.c:117
117         if( EXPECT(SMALL_OBJ(lb), 1) ) {
(gdb) n
119               lw = GC_size_map[lb];
(gdb) n
123             opp = &(GC_gcjobjfreelist[lw]);
(gdb) p opp
$1 = (ptr_t *) 0x0
(gdb) p lw
$2 = 10
(gdb) p
$3 = 10
</gdb>
 

   here again a NULL pointer is dereferenced.


Should I give up ? -- did gcj's jni work ever ?
   

-- 
   Johannes


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]