This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
gij problem (3.4.4)
- From: Thorsten Glaser <tg at 66h dot 42h dot de>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 4 May 2005 11:29:57 +0000 (UTC)
- Subject: gij problem (3.4.4)
Hello,
I've got Java classes from source ("99 bottles of beer") compiled
to bytecode and from source or bytecode to a dynamically linked
executable working just fine, also Sun's JDK works on the generated
bytecode - however, gij does not, even without boehm-gc (which
prevented it from working before):
tg@odem:/home/tg/tmp $ gdb --args /usr/bin/gij bottles
GNU gdb 6.3.50.20050107
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-ecce-mirbsd8"...(no debugging symbols found)
(gdb) r
Starting program: /usr/bin/gij bottles
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
Program received signal SIGSEGV, Segmentation fault.
0x02b88fa6 in _Jv_ClassReader::handleFieldsEnd () from /usr/lib/libgcj.so.5.0
(gdb) bt
#0 0x02b88fa6 in _Jv_ClassReader::handleFieldsEnd () from /usr/lib/libgcj.so.5.0
#1 0x02b8c408 in _Jv_ClassReader::read_fields () from /usr/lib/libgcj.so.5.0
#2 0x02b8c749 in _Jv_ClassReader::parse () from /usr/lib/libgcj.so.5.0
#3 0x02b8c974 in _Jv_DefineClass () from /usr/lib/libgcj.so.5.0
#4 0x02bab6eb in java::lang::VMClassLoader::defineClass () from /usr/lib/libgcj.so.5.0
#5 0x02bbb57a in java::lang::ClassLoader::defineClass () from /usr/lib/libgcj.so.5.0
#6 0x02cb6e37 in java::security::SecureClassLoader::defineClass () from /usr/lib/libgcj.so.5.0
#7 0x02c9d201 in java::net::URLClassLoader::findClass () from /usr/lib/libgcj.so.5.0
#8 0x02ba34e6 in gnu::gcj::runtime::VMClassLoader::findClass () from /usr/lib/libgcj.so.5.0
#9 0x02bbb748 in java::lang::ClassLoader::loadClass () from /usr/lib/libgcj.so.5.0
#10 0x02babae4 in _Jv_FindClass () from /usr/lib/libgcj.so.5.0
#11 0x02bab32b in java::lang::Class::forName () from /usr/lib/libgcj.so.5.0
#12 0x02bab44d in java::lang::Class::forName () from /usr/lib/libgcj.so.5.0
#13 0x02c27199 in gnu::gcj::runtime::FirstThread::run () from /usr/lib/libgcj.so.5.0
#14 0x02bb1962 in _Jv_ThreadRun () from /usr/lib/libgcj.so.5.0
#15 0x02b7d998 in _Jv_RunMain () from /usr/lib/libgcj.so.5.0
#16 0x1c000ade in ?? ()
#17 0x1c000870 in ?? ()
#18 0x00000002 in ?? ()
#19 0xcfbf4540 in ?? ()
#20 0xcfbf454c in ?? ()
#21 0x1c000d40 in ?? ()
#22 0x00000000 in ?? ()
(gdb) disas 0x02b88fa6
Dump of assembler code for function _ZN15_Jv_ClassReader15handleFieldsEndEv:
0x02b88ea8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+0>: push %ebp
0x02b88ea9 <_ZN15_Jv_ClassReader15handleFieldsEndEv+1>: mov %esp,%ebp
0x02b88eab <_ZN15_Jv_ClassReader15handleFieldsEndEv+3>: push %edi
0x02b88eac <_ZN15_Jv_ClassReader15handleFieldsEndEv+4>: push %esi
0x02b88ead <_ZN15_Jv_ClassReader15handleFieldsEndEv+5>: sub $0x40,%esp
0x02b88eb0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+8>: mov 0x8(%ebp),%eax
0x02b88eb3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+11>: movl $0x0,0xffffffe0(%ebp)
0x02b88eba <_ZN15_Jv_ClassReader15handleFieldsEndEv+18>: mov %eax,0xffffffe4(%ebp)
0x02b88ebd <_ZN15_Jv_ClassReader15handleFieldsEndEv+21>: mov 0x1c(%eax),%edx
0x02b88ec0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+24>: movswl 0x34(%edx),%eax
0x02b88ec4 <_ZN15_Jv_ClassReader15handleFieldsEndEv+28>: lea 0xffffffff(%eax),%esi
0x02b88ec7 <_ZN15_Jv_ClassReader15handleFieldsEndEv+31>: mov 0x80(%edx),%ecx
0x02b88ecd <_ZN15_Jv_ClassReader15handleFieldsEndEv+37>: cmp %esi,0xffffffe0(%ebp)
0x02b88ed0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+40>: mov 0x2c(%edx),%edi
0x02b88ed3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+43>: mov %ecx,0xffffffdc(%ebp)
0x02b88ed6 <_ZN15_Jv_ClassReader15handleFieldsEndEv+46>: jge 0x2b88fa0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+248>
0x02b88edc <_ZN15_Jv_ClassReader15handleFieldsEndEv+52>: mov 0xffffffe0(%ebp),%eax
0x02b88edf <_ZN15_Jv_ClassReader15handleFieldsEndEv+55>: shl $0x4,%eax
0x02b88ee2 <_ZN15_Jv_ClassReader15handleFieldsEndEv+58>: testb $0x8,0x8(%eax,%edi,1)
0x02b88ee7 <_ZN15_Jv_ClassReader15handleFieldsEndEv+63>: je 0x2b88fc8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+288>
0x02b88eed <_ZN15_Jv_ClassReader15handleFieldsEndEv+69>: incl 0xffffffe0(%ebp)
0x02b88ef0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+72>: cmp %esi,0xffffffe0(%ebp)
0x02b88ef3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+75>: jl 0x2b88edc <_ZN15_Jv_ClassReader15handleFieldsEndEv+52>
0x02b88ef5 <_ZN15_Jv_ClassReader15handleFieldsEndEv+77>: lea 0x0(%esi),%esi
0x02b88ef8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+80>: cmp %esi,0xffffffe0(%ebp)
0x02b88efb <_ZN15_Jv_ClassReader15handleFieldsEndEv+83>: je 0x2b88ff3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+331>
0x02b88f01 <_ZN15_Jv_ClassReader15handleFieldsEndEv+89>: mov 0xffffffe0(%ebp),%edx
0x02b88f04 <_ZN15_Jv_ClassReader15handleFieldsEndEv+92>: shl $0x4,%edx
0x02b88f07 <_ZN15_Jv_ClassReader15handleFieldsEndEv+95>: mov (%edx,%edi,1),%eax
0x02b88f0a <_ZN15_Jv_ClassReader15handleFieldsEndEv+98>: mov %eax,0xffffffe8(%ebp)
0x02b88f0d <_ZN15_Jv_ClassReader15handleFieldsEndEv+101>: mov 0x4(%edx,%edi,1),%eax
0x02b88f11 <_ZN15_Jv_ClassReader15handleFieldsEndEv+105>: mov %eax,0xffffffec(%ebp)
0x02b88f14 <_ZN15_Jv_ClassReader15handleFieldsEndEv+108>: mov 0x8(%edx,%edi,1),%eax
0x02b88f18 <_ZN15_Jv_ClassReader15handleFieldsEndEv+112>: mov %eax,0xfffffff0(%ebp)
0x02b88f1b <_ZN15_Jv_ClassReader15handleFieldsEndEv+115>: mov 0xc(%edx,%edi,1),%eax
---Type <return> to continue, or q <return> to quit---
0x02b88f1f <_ZN15_Jv_ClassReader15handleFieldsEndEv+119>: mov %eax,0xfffffff4(%ebp)
0x02b88f22 <_ZN15_Jv_ClassReader15handleFieldsEndEv+122>: mov 0xffffffdc(%ebp),%ecx
0x02b88f25 <_ZN15_Jv_ClassReader15handleFieldsEndEv+125>: mov 0xffffffe0(%ebp),%eax
0x02b88f28 <_ZN15_Jv_ClassReader15handleFieldsEndEv+128>: mov (%ecx,%eax,2),%ax
0x02b88f2c <_ZN15_Jv_ClassReader15handleFieldsEndEv+132>: mov %esi,%ecx
0x02b88f2e <_ZN15_Jv_ClassReader15handleFieldsEndEv+134>: shl $0x4,%ecx
0x02b88f31 <_ZN15_Jv_ClassReader15handleFieldsEndEv+137>: mov %ecx,0xffffffc4(%ebp)
0x02b88f34 <_ZN15_Jv_ClassReader15handleFieldsEndEv+140>: mov %ax,0xffffffda(%ebp)
0x02b88f38 <_ZN15_Jv_ClassReader15handleFieldsEndEv+144>: mov (%ecx,%edi,1),%eax
0x02b88f3b <_ZN15_Jv_ClassReader15handleFieldsEndEv+147>: mov %eax,(%edx,%edi,1)
0x02b88f3e <_ZN15_Jv_ClassReader15handleFieldsEndEv+150>: mov 0x4(%ecx,%edi,1),%eax
0x02b88f42 <_ZN15_Jv_ClassReader15handleFieldsEndEv+154>: mov %eax,0x4(%edx,%edi,1)
0x02b88f46 <_ZN15_Jv_ClassReader15handleFieldsEndEv+158>: mov 0x8(%ecx,%edi,1),%eax
0x02b88f4a <_ZN15_Jv_ClassReader15handleFieldsEndEv+162>: mov %eax,0x8(%edx,%edi,1)
0x02b88f4e <_ZN15_Jv_ClassReader15handleFieldsEndEv+166>: mov 0xc(%ecx,%edi,1),%eax
0x02b88f52 <_ZN15_Jv_ClassReader15handleFieldsEndEv+170>: mov %eax,0xc(%edx,%edi,1)
0x02b88f56 <_ZN15_Jv_ClassReader15handleFieldsEndEv+174>: mov 0xffffffdc(%ebp),%eax
0x02b88f59 <_ZN15_Jv_ClassReader15handleFieldsEndEv+177>: mov (%eax,%esi,2),%ax
0x02b88f5d <_ZN15_Jv_ClassReader15handleFieldsEndEv+181>: mov 0xffffffe0(%ebp),%edx
0x02b88f60 <_ZN15_Jv_ClassReader15handleFieldsEndEv+184>: mov 0xffffffdc(%ebp),%ecx
0x02b88f63 <_ZN15_Jv_ClassReader15handleFieldsEndEv+187>: mov %ax,(%ecx,%edx,2)
0x02b88f67 <_ZN15_Jv_ClassReader15handleFieldsEndEv+191>: mov 0xffffffe8(%ebp),%eax
0x02b88f6a <_ZN15_Jv_ClassReader15handleFieldsEndEv+194>: mov 0xffffffc4(%ebp),%edx
0x02b88f6d <_ZN15_Jv_ClassReader15handleFieldsEndEv+197>: mov %eax,(%edx,%edi,1)
0x02b88f70 <_ZN15_Jv_ClassReader15handleFieldsEndEv+200>: mov 0xffffffec(%ebp),%eax
0x02b88f73 <_ZN15_Jv_ClassReader15handleFieldsEndEv+203>: mov %eax,0x4(%edx,%edi,1)
0x02b88f77 <_ZN15_Jv_ClassReader15handleFieldsEndEv+207>: mov 0xfffffff0(%ebp),%eax
0x02b88f7a <_ZN15_Jv_ClassReader15handleFieldsEndEv+210>: mov %eax,0x8(%edx,%edi,1)
0x02b88f7e <_ZN15_Jv_ClassReader15handleFieldsEndEv+214>: mov 0xfffffff4(%ebp),%eax
0x02b88f81 <_ZN15_Jv_ClassReader15handleFieldsEndEv+217>: mov %eax,0xc(%edx,%edi,1)
0x02b88f85 <_ZN15_Jv_ClassReader15handleFieldsEndEv+221>: mov 0xffffffda(%ebp),%ax
0x02b88f89 <_ZN15_Jv_ClassReader15handleFieldsEndEv+225>: mov %ax,(%ecx,%esi,2)
0x02b88f8d <_ZN15_Jv_ClassReader15handleFieldsEndEv+229>: incl 0xffffffe0(%ebp)
0x02b88f90 <_ZN15_Jv_ClassReader15handleFieldsEndEv+232>: dec %esi
0x02b88f91 <_ZN15_Jv_ClassReader15handleFieldsEndEv+233>: cmp %esi,0xffffffe0(%ebp)
0x02b88f94 <_ZN15_Jv_ClassReader15handleFieldsEndEv+236>: jl 0x2b88edc <_ZN15_Jv_ClassReader15handleFieldsEndEv+52>
0x02b88f9a <_ZN15_Jv_ClassReader15handleFieldsEndEv+242>: mov 0xffffffe4(%ebp),%ecx
0x02b88f9d <_ZN15_Jv_ClassReader15handleFieldsEndEv+245>: mov 0x1c(%ecx),%edx
0x02b88fa0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+248>: mov 0xffffffe0(%ebp),%eax
---Type <return> to continue, or q <return> to quit---
0x02b88fa3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+251>: shl $0x4,%eax
0x02b88fa6 <_ZN15_Jv_ClassReader15handleFieldsEndEv+254>: movzwl 0x8(%eax,%edi,1),%eax
0x02b88fab <_ZN15_Jv_ClassReader15handleFieldsEndEv+259>: shr $0x3,%eax
0x02b88fae <_ZN15_Jv_ClassReader15handleFieldsEndEv+262>: and $0x1,%eax
0x02b88fb1 <_ZN15_Jv_ClassReader15handleFieldsEndEv+265>: cmp $0x1,%al
0x02b88fb3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+267>: sbbl $0xffffffff,0xffffffe0(%ebp)
0x02b88fb7 <_ZN15_Jv_ClassReader15handleFieldsEndEv+271>: mov 0xffffffe0(%ebp),%ecx
0x02b88fba <_ZN15_Jv_ClassReader15handleFieldsEndEv+274>: mov %cx,0x36(%edx)
0x02b88fbe <_ZN15_Jv_ClassReader15handleFieldsEndEv+278>: add $0x40,%esp
0x02b88fc1 <_ZN15_Jv_ClassReader15handleFieldsEndEv+281>: pop %esi
0x02b88fc2 <_ZN15_Jv_ClassReader15handleFieldsEndEv+282>: pop %edi
0x02b88fc3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+283>: leave
0x02b88fc4 <_ZN15_Jv_ClassReader15handleFieldsEndEv+284>: ret
0x02b88fc5 <_ZN15_Jv_ClassReader15handleFieldsEndEv+285>: lea 0x0(%esi),%esi
0x02b88fc8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+288>: cmp %esi,0xffffffe0(%ebp)
0x02b88fcb <_ZN15_Jv_ClassReader15handleFieldsEndEv+291>: jge 0x2b88ef8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+80>
0x02b88fd1 <_ZN15_Jv_ClassReader15handleFieldsEndEv+297>: lea 0x0(%esi),%esi
0x02b88fd4 <_ZN15_Jv_ClassReader15handleFieldsEndEv+300>: mov %esi,%eax
0x02b88fd6 <_ZN15_Jv_ClassReader15handleFieldsEndEv+302>: shl $0x4,%eax
0x02b88fd9 <_ZN15_Jv_ClassReader15handleFieldsEndEv+305>: testb $0x8,0x8(%eax,%edi,1)
0x02b88fde <_ZN15_Jv_ClassReader15handleFieldsEndEv+310>: jne 0x2b88ef8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+80>
0x02b88fe4 <_ZN15_Jv_ClassReader15handleFieldsEndEv+316>: dec %esi
0x02b88fe5 <_ZN15_Jv_ClassReader15handleFieldsEndEv+317>: cmp %esi,0xffffffe0(%ebp)
0x02b88fe8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+320>: jl 0x2b88fd4 <_ZN15_Jv_ClassReader15handleFieldsEndEv+300>
0x02b88fea <_ZN15_Jv_ClassReader15handleFieldsEndEv+322>: cmp %esi,0xffffffe0(%ebp)
0x02b88fed <_ZN15_Jv_ClassReader15handleFieldsEndEv+325>: jne 0x2b88f01 <_ZN15_Jv_ClassReader15handleFieldsEndEv+89>
0x02b88ff3 <_ZN15_Jv_ClassReader15handleFieldsEndEv+331>: mov 0xffffffe4(%ebp),%eax
0x02b88ff6 <_ZN15_Jv_ClassReader15handleFieldsEndEv+334>: mov 0x1c(%eax),%edx
0x02b88ff9 <_ZN15_Jv_ClassReader15handleFieldsEndEv+337>: jmp 0x2b88fa0 <_ZN15_Jv_ClassReader15handleFieldsEndEv+248>
0x02b88ffb <_ZN15_Jv_ClassReader15handleFieldsEndEv+339>: nop
End of assembler dump.
(gdb)
Comparision with source (shortened):
/usr/src/gcc/libjava/defineclass.cc:1179
18d: 66 8b 45 da mov 0xffffffda(%ebp),%ax
191: 66 89 04 71 mov %ax,(%ecx,%esi,2)
/usr/src/gcc/libjava/defineclass.cc:1182
195: ff 45 e0 incl 0xffffffe0(%ebp)
/usr/src/gcc/libjava/defineclass.cc:1181
198: 4e dec %esi
/usr/src/gcc/libjava/defineclass.cc:1182
199: 39 75 e0 cmp %esi,0xffffffe0(%ebp)
19c: 0f 8c 42 ff ff ff jl e4 <_ZN15_Jv_ClassReader15handleFieldsEndEv+0x34>
1a2: 8b 4d e4 mov 0xffffffe4(%ebp),%ecx
1a5: 8b 51 1c mov 0x1c(%ecx),%edx
/usr/src/gcc/libjava/defineclass.cc:1185
}
if ((fields[low].flags & Modifier::STATIC) != 0)
1a8: 8b 45 e0 mov 0xffffffe0(%ebp),%eax
1ab: c1 e0 04 shl $0x4,%eax
1ae: 0f b7 44 38 08 movzwl 0x8(%eax,%edi,1),%eax
1b3: c1 e8 03 shr $0x3,%eax
1b6: 83 e0 01 and $0x1,%eax
/usr/src/gcc/libjava/defineclass.cc:1186
low += 1;
1b9: 3c 01 cmp $0x1,%al
1bb: 83 5d e0 ff sbbl $0xffffffff,0xffffffe0(%ebp)
/usr/src/gcc/libjava/defineclass.cc:1188
def->static_field_count = low;
1bf: 8b 4d e0 mov 0xffffffe0(%ebp),%ecx
1c2: 66 89 4a 36 mov %cx,0x36(%edx)
1c6: 83 c4 40 add $0x40,%esp
1c9: 5e pop %esi
1ca: 5f pop %edi
1cb: c9 leave
1cc: c3 ret
1cd: 8d 76 00 lea 0x0(%esi),%esi
/usr/src/gcc/libjava/defineclass.cc:1167
1d0: 39 75 e0 cmp %esi,0xffffffe0(%ebp)
1d3: 0f 8d 27 ff ff ff jge 100 <_ZN15_Jv_ClassReader15handleFieldsEndEv+0x50>
1d9: 8d 76 00 lea 0x0(%esi),%esi
1dc: 89 f0 mov %esi,%eax
1de: c1 e0 04 shl $0x4,%eax
1e1: f6 44 38 08 08 testb $0x8,0x8(%eax,%edi,1)
1e6: 0f 85 14 ff ff ff jne 100 <_ZN15_Jv_ClassReader15handleFieldsEndEv+0x50>
1ec: 4e dec %esi
1ed: 39 75 e0 cmp %esi,0xffffffe0(%ebp)
1f0: 7c ea jl 1dc <_ZN15_Jv_ClassReader15handleFieldsEndEv+0x12c>
/usr/src/gcc/libjava/defineclass.cc:1169
1f2: 39 75 e0 cmp %esi,0xffffffe0(%ebp)
1f5: 0f 85 0e ff ff ff jne 109 <_ZN15_Jv_ClassReader15handleFieldsEndEv+0x59>
1fb: 8b 45 e4 mov 0xffffffe4(%ebp),%eax
1fe: 8b 50 1c mov 0x1c(%eax),%edx
201: eb a5 jmp 1a8 <_ZN15_Jv_ClassReader15handleFieldsEndEv+0xf8>
203: 90 nop
00000204 <_ZN15_Jv_ClassReader18handleMethodsBeginEi>:
_ZN15_Jv_ClassReader18handleMethodsBeginEi():
/usr/src/gcc/libjava/defineclass.cc:1195
}
A quick look into CVSweb shows me _Jv_ClassReader::handleFieldsEnd ()
is still the same as in 3.4.4. Does anyone have an idea where this
SIGSEGV could come from?
Thanks,
//mirabile
--
> Hi, does anyone sell openbsd stickers by themselves and not packaged
> with other products?
No, the only way I've seen them sold is for $40 with a free OpenBSD CD.
-- Haroon Khalid and Steve Shockley in gmane.os.openbsd.misc