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):

[EMAIL PROTECTED]:/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

Reply via email to