libjava gcc-3_0-branch, klass timing out in testsuite again

Jeff Sturm jsturm@one-point.com
Sat May 5 02:37:00 GMT 2001


On Fri, 4 May 2001, Gordon Sadler wrote:
> For a more thorough look at what happenned for me on i686 last
> time, please see:
> http://gcc.gnu.org/ml/gcc/2001-04/msg00663.html
> http://gcc.gnu.org/ml/gcc/2001-04/msg00676.html

Your stack trace looks a lot like mine, minus line number information.

Clue #1 is that it aborts in clone(), but line 8 calls equals(),
not clone().  Clue #2 is that the class pointer (actually first word
of the vtable) doesn't point to a class at all.

That is, it behaves exactly as if these lines in Class.h do nothing:

    // C++ ctors set the vtbl pointer to point at an offset inside the
vtable
    // object. That doesn't work for Java, so this hack adjusts it back.
    void *p =  ((void **)this)[0];
    ((void **)this)[0] = (void *)((char *)p-2*sizeof (void *));
 
Rebuilding libjava with -fno-strict-aliasing is the quick fix:

PASS: klass compilation from source
PASS: klass execution from source compiled test
PASS: klass output from source compiled test

Can some C++ person comment on the code fragment above in terms of
aliasing?

Jeff



More information about the Java mailing list