[kaffe] MIPS JIT3 and null pointers.

Timothy Stack stack at cs.utah.edu
Fri Mar 19 08:31:02 PST 2004


> >>>>> "Casey" == Casey Marshall <rsdio at metastatic.org> writes:
> 
> Casey> Hi, I've determined why an invokeinterface on a null object
> Casey> will abort rather than throw a NullPointerException: in
> Casey> dispatchException (kaffe/kaffevm/exception.c:303) the full
> Casey> stack trace cannot be built, for some reason, so the exception
> Casey> handler won't be found.
> 
> Casey> The SIGSEGV occurs in soft_lookupinterfacemethod, which is
> Casey> called with a NULL obj parameter, which in turn is called from
> Casey> jitted code. So my guess is that somehow the MIPS backend can't
> Casey> trace back across this barrier.
> 
> Casey> I'm assuming that __mipsGetNextFrame is broken, but would
> Casey> entertain other ideas. Has anyone dealt with something similar
> Casey> to this on other architectures?
> 
> Or: is it even possible to build a stack frame from one of Kaffe's
> internal C functions?

I would think so.

> buildStackFrame stops at
> soft_lookupinterfacemethod because it is is not a part of the current
> thread; i.e. jthread_on_current_stack returns false when an address in
> soft_lookupinterfacemethod is called.

Whats the value, does it make sense as a stack pointer?  Can you check the 
EXCEPTIONFRAME macro in config/mips/linux/jit-md.h and make sure its sane.  
You will want to make sure the MIPS_FP constant is correct for your ABI.

Also, does test/regression/NullPointerTest.java work for you?  Which
threading package are you using (unix-jthreads/unix-pthreads)?

> Casey Marshall || rsdio at metastatic.org

tim




More information about the kaffe mailing list