[kaffe] failed regression tests

Rob Gonzalez rgonzale@wso.williams.edu
Sun Jun 29 13:15:01 2003


Hi all,

> > on my box (K6 Linux 2.4.18 Debian/unstable jit3), the
> > following regression tests fail on the latest cvs version of kaffe:
> > 
> >         FAIL: DoublePrint.java
> >         FAIL: ThreadState.java
> >         FAIL: InnerTest.java
> >         FAIL: finaltest.java
> >         FAIL: SortTest.java
> >         FAIL: MapTest.java
> >         FAIL: LineNumberReaderTest.java
> >         FAIL: KaffeInternal.java
> 
> that's weird. I have 0 tests failing under i686-linux (p3-650, Mandrake 9.1).
> What's a K6? how do the tests fail?

By K6 I meant K7...short for Athlon/Duron family of processors.

Anyway, here's why each of the tests fail:

*************************************************************************
ThreadState.java:
*************************************************************************
/* Expected Output:
Success.
Success.
Success.
Success.
Success.
Success.
Success.
Success.
Success.
Success.
*/

what i got:

Success.
Success.
Success.
Success.
Success.
Success.
Success.
Success.
Success.
Success.

interesting, eh?  it turns out that my compiler (jikes 1.18) is spitting
out tons of lexical warning messages such as:

	Issued 10 lexical warnings in "ThreadState.java":
	
	    46.         assert(false, "main " + e);
	                ^----^
 	*** Lexical Warning: The use of "assert" as an identifier is
        deprecated, as it is now a keyword. Use -source 1.4 if you
        intended to make use of assertions.

these warnings are confusing the testing script.  when i run jikes with
the -nowarn option, this test is successful, as are:

	finaltest.java
	SortTest.java
	MapTest.java
	LineNumberReaderTest.java

the regression scripts should definitely be ignoring the compiler output
when checking to see if a test succeeds.


*************************************************************************
KaffeInternal.java:
*************************************************************************
/* Expected Output:
java.lang.NoClassDefFoundError: kaffe/lang/ThreadStack
*/

what i got:

java.lang.SecurityException: Prohibited package: kaffe/lang/ThreadStack

I believe that what I got is the expected behavior, only that between the
writing of the regression test and now the exception thrown for a class
attempting to access something that it should not be accessing has
changed.  perhaps the expected output of the regression test should be
updated?


*************************************************************************
DoublePrint.java:
*************************************************************************
/* Expected output:
Double values:
  NaN -> 7ff8000000000000
  0.0
  -0.0
  -0.0
  1.0
  NaN
  Infinity
  -Infinity
  4.9E-324
  1.7976931348623157E308
  666666.5555555555
  123.75
  -9000000.0
  0.001
  1.05E9
  0.0/0.0 = NaN

Float values:
  NaN -> 7fc00000
  0.0
  -0.0
  -0.0
  1.0
  NaN
  Infinity
  -Infinity
  1.4E-45
  3.4028235E38
  666666.56
  123.75
  1.0E7
  -0.001
  0.0/0.0 = NaN
*/

what i actually got (there are some discrepencies here):

Double values:
  NaN -> 7ff8000000000000
  0.0
  0.0
  -0.0
  1.0
  NaN
  Infinity
  -Infinity
  4.9E-324
  1.7976931348623157E308
  666666.5555555555
  123.75
  -9000000.0
  0.001
  1.05E9
  0.0/0.0 = NaN

Float values:
  NaN -> 7fc00000
  0.0
  0.0
  -0.0
  1.0
  NaN
  Infinity
  -Infinity
  1.4E-45
  3.4028235E38
  666666.56
  123.75
  1.0E7
  -0.001
  0.0/0.0 = NaN

I'm not a hardware person and don't know much about floats, so i have no
idea where to begin tracking down the problem with that one...

*************************************************************************
InnerTest.java:
*************************************************************************
/* Expected Output:
InnerBase: declared: class InnerBase$privateInstanceClass [2] private
InnerBase: declared: class InnerBase$privateStaticClass [a] private static
InnerBase: declared: class InnerBase$protectedInstanceClass [4] protected
InnerBase: declared: class InnerBase$protectedStaticClass [c] protected
static
InnerBase: declared: class InnerBase$publicInstanceClass [1] public
InnerBase: declared: class InnerBase$publicStaticClass [9] public static
InnerBase: declared: interface InnerBase$publicInstanceInterface [609]
public abstract static interface
InnerBase: declared: interface InnerBase$publicStaticInterface [609]
public abstract static interface
InnerBase: declaring: <null>
InnerBase: get: class InnerBase$publicInstanceClass [1] public
InnerBase: get: class InnerBase$publicStaticClass [9] public static
InnerBase: get: interface InnerBase$publicInstanceInterface [609] public
abstract static interface
InnerBase: get: interface InnerBase$publicStaticInterface [609] public
abstract static interface
InnerTest: declared: class InnerTest$1 [10] final
InnerTest: declared: class InnerTest$2 [10] final
InnerTest: declared: class InnerTest$3 [10] final
InnerTest: declared: class InnerTest$4 [10] final
InnerTest: declared: class InnerTest$Inner [9] public static
InnerTest: declaring: <null>
InnerTest: get: class InnerBase$publicInstanceClass [1] public
InnerTest: get: class InnerBase$publicStaticClass [9] public static
InnerTest: get: class InnerTest$Inner [9] public static
InnerTest: get: interface InnerBase$publicInstanceInterface [609] public
abstract static interface
InnerTest: get: interface InnerBase$publicStaticInterface [609] public
abstract static interface
java.lang.Object: declared: <empty>
java.lang.Object: declaring: <null>
java.lang.Object: get: <empty>
*/

what I got:

java.lang.Object: declaring: <null>
java.lang.Object: declared: <empty>
java.lang.Object: get: <empty>
InnerBase: declaring: <null>
InnerBase: declared: interface InnerBase$publicInstanceInterface [609]
public abstract static interface
InnerBase: declared: interface InnerBase$publicStaticInterface [609]
public abstract static interface
InnerBase: declared: class InnerBase$publicStaticClass [9] public static
InnerBase: declared: class InnerBase$publicInstanceClass [1] public
InnerBase: declared: class InnerBase$protectedStaticClass [c] protected
static
InnerBase: declared: class InnerBase$protectedInstanceClass [4] protected
InnerBase: declared: class InnerBase$privateStaticClass [a] private static
InnerBase: declared: class InnerBase$privateInstanceClass [2] private
InnerBase: get: interface InnerBase$publicInstanceInterface [609] public
abstract static interface
InnerBase: get: interface InnerBase$publicStaticInterface [609] public
abstract static interface
InnerBase: get: class InnerBase$publicStaticClass [9] public static
InnerBase: get: class InnerBase$publicInstanceClass [1] public
InnerTest: declaring: <null>
InnerTest: declared: class InnerTest$Inner [9] public static
InnerTest: get: interface InnerBase$publicInstanceInterface [609] public
abstract static interface
InnerTest: get: interface InnerBase$publicStaticInterface [609] public
abstract static interface
InnerTest: get: class InnerBase$publicStaticClass [9] public static
InnerTest: get: class InnerBase$publicInstanceClass [1] public
InnerTest: get: class InnerTest$Inner [9] public static


haven't spent too much time with this one yet...


if i can post any further info about any of these tests, lemme know.

Rob