Hi,

I've recently stumbled on a problem with serializing arrays from the Sun java 
implementation to the Jikes RVM implementation. I think the problem is that 
Classpath doesn't ignore serialVersionUID mismatches for array classes, and 
since Jikes RVM seems to generate different serials for arrays than Sun java 
a test program like the one attached in my Jikes RVM bug report at:

http://sourceforge.net/tracker/index.php?func=detail&aid=1549924&group_id=128805&atid=712768

crashes. It serializes an Object[] with the Sun java and loads in Jikes RVM, 
resulting in an exception. As described in the bug report, the Serialization 
spec was updated to clarify that array serials should be ignored when 
checking for mismatches. I've attached a patch which should fix this.

 - elias
Index: java/io/ObjectStreamClass.java
===================================================================
RCS file: /sources/classpath/classpath/java/io/ObjectStreamClass.java,v
retrieving revision 1.46
diff -u -r1.46 ObjectStreamClass.java
--- java/io/ObjectStreamClass.java	21 Aug 2006 09:27:50 -0000	1.46
+++ java/io/ObjectStreamClass.java	12 Sep 2006 19:11:09 -0000
@@ -317,8 +317,8 @@
     else
       {
 	// Check that the actual UID of the resolved class matches the UID from 
-	// the stream.    
-	if (uid != class_uid)
+	// the stream. Mismatches for array classes are ignored.
+	if (!cl.isArray() && uid != class_uid)
 	  {
 	    String msg = cl + 
 	      ": Local class not compatible: stream serialVersionUID="

Reply via email to