Scott Heavner - 2006-01-28

Logged In: YES
user_id=41790

I am seeing this on solaris and linux amd_64.

I've traced it to line 1903 of class.cpp where
interf->supertypes_closure is null. If I add a null check
and skip over 1903 when null (which seems like a reasonable
thing to do), then it reports class not found. The class it
cannot find is compiled into a jar file and implements
interfaces defined in a third jar file. Javac works fine
when I leave this third jar file out of the compile time
classpath, but jikes 1.22 segfaults.

#2 0x000000000044f04c in Semantic::ProcessClassFile
(this=0xd313f0, type=0x12f5f40,
buffer=0x12b34a0 "Êþº¾", buffer_size=6937, tok=3640) at
class.cpp:1903
1903 type -> supertypes_closure -> Union(*interf
-> supertypes_closure);

(gdb) list
1896 for (i = class_data -> InterfacesCount() - 1; i
>= 0; i--)
1897 {
1898 class_info = class_data -> Interface(i);
1899 assert(class_info);
1900 TypeSymbol* interf = GetType(type,
class_info, pool, tok);
1901 type -> AddInterface(interf);
1902 type -> supertypes_closure ->
AddElement(interf);
1903 type -> supertypes_closure -> Union(*interf
-> supertypes_closure);
1904 if (! interf -> ACC_INTERFACE())
1905 type -> MarkBad();
1906 }
1907