This is the mail archive of the
java-discuss@sourceware.cygnus.com
mailing list for the Java project.
Re: jc1 segfaults compiling volano
- To: bryce@albatross.co.nz
- Subject: Re: jc1 segfaults compiling volano
- From: Andrew Haley <aph@pasanda.cygnus.co.uk>
- Date: 22 Jun 1999 09:39:34 -0000
- CC: java-discuss@sourceware.cygnus.com
> Date: Tue, 22 Jun 1999 18:16:35 +1200
> From: Bryce McKinlay <bryce@albatross.co.nz>
>
> As part of my ongoing effort to get the "volano" benchmark
> (ftp://ftp.volano.com/vmark2_1_2_0.class) to work on gcj (Volano
> consists of some rather nasty obfuscated classes), I have encountered
> two seperate segfaults trying to compile the "volano" benchmark :
>
> These are with:
> GNU Java version gcc-2.96 19990621 (experimental) (i686-pc-linux-gnu)
> compiled by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2
> release).
>
> The first one (COM/volano/NTService.class):
>
> (gdb) run COM/volano/NTService.class -quiet -g1 -version -o
> /tmp/ccdlQRPp.s
> Starting program:
> /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/gcc-2.96/jc1
> COM/volano/NTService.class -quiet -g1 -version -o /tmp/ccdlQRPp.s
> GNU Java version gcc-2.96 19990621 (experimental) (i686-pc-linux-gnu)
> compiled by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2
> release).
> COM/volano/NTService.java:0: Cannot find file for class
> com.ms.service.Service.
> COM/volano/NTService.java:0: Cannot find file for class
> com.ms.service.Service.
>
> Program received signal SIGSEGV, Segmentation fault.
Sigh. I'm beginning to wonder if the bytecode compiler should just
give up after failing to find a class. After all, the compilation is
bound to fail, so what's the point of trying to continue? I know that
the C++ and C compilers continue checking syntax and try to recover
(sometimes successfully) but I don't know if it makes any sense to do
so with a bytecode compiler. Comments welcome.
> Of course, we don't need NTService.class, so I replaced it with the
> following stub, which gcj seems to accept:
>
> package COM.volano;
>
> public class NTService
> {
> public static void \u01ad (String a, String b) {}
> public boolean handleStop() {return true;}
> public boolean handleShutdown() {return true;}
> }
>
> Unfortunatly, we get another segfault further down the track, in
> COM/volano/mbi.class:
>
> (gdb) run COM/volano/mbi.class -g1 -version -o /tmp/ccrq582R.s
> Program received signal SIGSEGV, Segmentation fault.
> load_type_state (label=0x824fe60) at ../../../gcc/java/expr.c:1801
> 1801 int cur_length = TREE_VEC_LENGTH (vec);
This is weird. I'll have a look.
Andrew.