[kaffe] Bug Report: accessing array doesn't throw NullPointerException under MIPS

Kevin D. Kissell kevink at mips.com
Wed Mar 12 00:19:01 PST 2003

A few days ago, I wrote:

> > Correct, the intrp engine works fine (albiet *SO* much slower).
> > 
> > The test are now passing.
> >
> > Kevin, since you seem to implicated as being the MIPS assembly guru, is 
> > there any way that I can assist with the JIT3 engine fixed?
> Maybe.  See below.
> > Since our application is running on an embedded (300 Mhz, 30 MB RAM) 
> > system my gut feeling would be that we would get a better mix of 
> > performance/memory with JIT.  Is there anything definitive for kaffe?
> Even broken, the kaffe JIT on MIPS is good for a factor of *20*
> performance on Embedded Caffeinemark (which is admittedly a
> pretty broken benchmark that is insanely favorable to JITs). 
> I don't know what's "definitive".  I have a little time to look at
> the problem just now, so maybe I can advance things.  It's hard
> to see what's really going on, but most (but not all) of the JIT
> failures are on regression tests that failed similarly on the Intrp
> builds up until I fixed the argument passing logic at the native
> method invocation interface.  The JIT code which does the same
> thing is similar (and similarly convoluted), but my attempts at
> finding and fixing the "same" bug were not initially successful.
> So I'm rolling up my sleeves, starting from a clean CVS update,
> and seeing what I can find.  If you (or anyone else) have any interest 
> or experience in figuring out what's wrong from a "top down",
> starting from the regression test and identifying the specific failure
> mode, that would be really helpful.  Already, you've provided 
> a small test case for a new failure mode.  ;o)

One thing that I forgot to mention in my previous emails on the
topic is that one not only needs a properly patched and configured
kaffe for MIPS/Linux, but one needs an up-to-date version of the
OS and glibc as well.  In particular, I'm thinking of some regression
test failures that I used to see that were caused by a bug in the kernel
signal context management code that would occasionally corrupt the
floating-point context of processes.  I mention this because the failure
of the ReflectInterfaces regression test that Matthew reported with JIT 
enabled is not one of the tests that I see failing under JIT3 in my setup.

While I am working on trying to understand the half-dozen regression
test failures that I still see with JIT3 on MIPS/Linux, as it turns out,
Matthew's small test program does *not* fail on my setup - it takes
and catches the Null Pointer exception as one might expect (though
I was troubled that it takes it with a "real" exception - a segmentation
violation signal being caught rather than an explicit test for null pointer).

And as an FYI to developers, I don't know what's been changed elsewhere
in the tree that would account for it, but while I can build and debug a JIT3
version of kaffe-1.0.7+patch, I cannot get "make" to complete for a JIT3
kaffe using the current CVS sources - it blows out during the compilation
of the Java class libraries, complaining about floating point values on the
order of 1-point-something being "too small".

            Kevin K.

More information about the kaffe mailing list