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]

Regression with gij?



It seems that while testing patches, I caught a problem with gij.  It
shows up with the current tree but not 3.0. The bytecodes that is
emitted by both compilers is the same and works with Sun's
interpreter. Sun's generated bytecode triggers an similar problem.

With the current gij, the test case just hangs instead of printing
`foo'. gdb seems to be telling me that it's caught in
undwind-dw2:uw_frame_state_for after it hits a segv in
__strtol_internal:

#0  __strtol_internal (nptr=0x40238610 "U\211e\203l\030\211]|hO", 
    endptr=0xbffff1f0, base=4, group=0) at eval.c:36
#1  0x4023870b in ffi_call_SYSV ()
    at /home/apbianco/src/egcs/libjava/java/lang/natSystem.cc:255
#2  0x402386c1 in ffi_raw_call (cif=0x80bcb80, fn=0, rvalue=0xbffff468, 
    fake_avalue=0xbffff500) at /home/apbianco/src/egcs/libffi/src/x86/ffi.c:498
#3  0x40130047 in _Jv_InterpMethod::continue1(_Jv_InterpMethodInvocation*) (
    this=0x80bbd70, inv=0xbffff4f4)
    at /home/apbianco/src/egcs/libjava/interpret.cc:710
#4  0x4023b188 in _Jv_InterpMethod::run(ffi_cif*, void*, ffi_raw*, _Jv_InterpMethodInvocation*) (this=0x80bbd70, cif=0x80ab0c0, retp=0xbffff530, 
    args=0xbffff550, inv=0xbffff4f4)
    at /home/apbianco/src/egcs/libjava/interpret.cc:219
#5  0x4012fd24 in _Jv_InterpMethod::run_normal(ffi_cif*, void*, ffi_raw*, void*) (cif=0x80ab0c0, ret=0xbffff530, args=0xbffff550, __this=0x80bbd70)
    at /home/apbianco/src/egcs/libjava/interpret.cc:339
#6  0x4023854c in ffi_closure_raw_SYSV ()
    at /home/apbianco/src/egcs/libffi/src/x86/ffi.c:386
#7  0x401386c8 in gnu::gcj::runtime::FirstThread::call_main() (this=0x808afc0)
    at /home/apbianco/src/egcs/libjava/gnu/gcj/runtime/natFirstThread.cc:46
#8  0x401c0f98 in _ZN3gnu3gcj7runtime11FirstThread3runEv (this=0x808afc0)
    at /home/apbianco/src/egcs/libjava/gnu/gcj/runtime/FirstThread.java:54
#9  0x4014582c in _Jv_ThreadRun(java::lang::Thread*) (thread=0x808afc0)
    at /home/apbianco/src/egcs/libjava/java/lang/natThread.cc:285
#10 0x4011f464 in _Jv_RunMain(java::lang::Class*, char const*, int, char const**, bool) (klass=0x0, name=0xbffff870 "Anon", argc=1, argv=0xbffff6d0, 
    is_jar=false) at /home/apbianco/src/egcs/libjava/prims.cc:951
#11 0x08048d42 in main (argc=2, argv=0xbffff6cc)
    at /home/apbianco/src/egcs/libjava/gij.cc:139
#12 0x40405f11 in __libc_start_main (main=0x8048b20 <main>, argc=2, 
    ubp_av=0xbffff6cc, init=0x8048784 <_init>, fini=0x8048df8 <_fini>, 
    rtld_fini=0x4000e214 <_dl_fini>, stack_end=0xbffff6c4)
    at ../sysdeps/generic/libc-start.c:129

The test case is appended below. Has anyone seen this?

./A

public abstract class Anon
{
  public abstract void foo();

  public static void main(String[] args)
  {
    Anon a;
    a = new Anon()
      {
        public void foo()
        {
          System.out.println("foo");
        }
      };

    a.foo();
  }
}


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