Re: Kaffe on GNU Hurd
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:
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
[and infinite loop, it's ``while(true) continue;'' from Preempt.java]
Test stack trace build, use SEGV.
Test SEGV in thread
use SEGV in finalize() [aka in finalizer thread]
> 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
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
In regression directory, export KAFFE_DEBUG=gdb and run kaffe LostFrame,
you will see usual (gdb) prompt.
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
[ 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
Edouard G. Parmelan