Igor Khavkine wrote: > Ok, I've just redid my Hurd installation and d/led a kaffe-snap tarball this > week. I've tried building it as an interpreter, but apparently that doesn't > work. There is a link error at the end of the build (something to do with > missing softcall_methodlookup). I built it agian with the normal jit and > tried > to do more tests. Unfortunately the 3 fails that i mentioned before were not > the only ones (i just didn't get to see them before).
Humm, kaffe-snap tarball generation is broken since Nov 1 :( I had create some tarball on http://egp.free.fr/kaffe. Use them if you can't use CVS Tree. > > Could you check that SP_OFFSET is 2 in jmp_buf for i386-gnu ? You > > could use developers/sp_offset.c to guest that. > > I tried that and it gives me SP_OFFSET 4. Why did I ask you is SP_OFFSET was 2 ? Default SP_OFFSET value is in config/i386/thread.h and it's 4, no problems here. > > #define EXCEPTIONPROTO \ > > int sig, int code, struct sigcontext* ctx > > > > I will commit this definition (and change of EXCEPTIONFRAME macro). Did you use this definition ? > >From what I can gather most (or all) of the failed tests have to do with > exception handling (or signal handling). Here's the list so far: > Preempt Test thread system. It work ONLY IF you have working SIGVTALRM and setitimer() and ITIMER_VIRTUAL. Could you check that theses are true on GNU Hurd ? I had discover that kaffe -vmdebug JTHREADNOPREEMPT Preempt produce: started 5 threads thread 0 [and infinite loop, it's ``while(true) continue;'' from Preempt.java] > StackDump Test stack trace build, use SEGV. > UncaughtException Test SEGV in thread > NullPointerTest use SEGV > LostFrame use SEGV > finalexc use SEGV in finalize() [aka in finalizer thread] > KffeVerifyBug synchronize ? > ExceptionInInitializer. use SEGV > I think there'll be more because i haven't gone through all the tests > yet. I'm not an expert as i've mentioned before, so i'll try to get > more info about signal handling and see what i can do about it or at > least gather more information. Okay, get last snapshot (or last CVS Tree) and precompiled regression classes at http://egp.free.fr/kaffe/regression-classes.tar.bz2, if kaffe don't work, classes could not be compiled by kjc :(. Then, build Kaffe with --enable-debug, install it and extract precompiled regression classes. For signals, use LostFrame, I write this test when I proting Kaffe to NCR MP-RAS. I discover that page 0 [NULL] was readable so ((Object)null).hashCode() was detected to late, Kaffe lost one frame context. Use it to check that your EXCEPTIONPROTO is set correct for GNU Hurd. In regression directory, export KAFFE_DEBUG=gdb and run kaffe LostFrame, you will see usual (gdb) prompt. (gdb) run Program received signal SIGSEGV, Segmentation fault. [ it's normal, set some breakpoints, get $pc and $bp, and continue] (gdb) break signal.c:nullException (gdb) print /x $eip (gdb) print /x $ebp (gdb) continue [ you should be in nullException(EXCEPTIONPROTO), check that eip and ebp registers in signal context struct have same values that before] (gdb) print /x ctx->sc_eip (gdb) print /x ctx->sc_ebp If they don't have the same value, EXCEPTIONPROTO is not defined as expected on GNU Hurd (or sigcontext is not correctly supported). For further debugging, you could source KAFFE/developers/gdbinit, it contains useful macros as JITwhere that lookup current frame in jitted methods. -- Edouard G. Parmelan http://egp.free.fr

