harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Charles Lamb (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-6439) NullPointerException thrown in certain Serialization cases
Date Fri, 05 Feb 2010 12:38:30 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-6439?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Charles Lamb updated HARMONY-6439:
----------------------------------

    Attachment: ClassDescriptorOverrideBug.java

> NullPointerException thrown in certain Serialization cases
> ----------------------------------------------------------
>
>                 Key: HARMONY-6439
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6439
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>    Affects Versions: 5.0M12
>         Environment: Windows
>            Reporter: Charles Lamb
>            Priority: Minor
>         Attachments: ClassDescriptorOverrideBug.java
>
>
> Harmony object serialization has an initialization bug that causes NullPointerException
when overriding the ObjectInputStream.readClassDescriptor and ObjectOutputStream.writeClassDescriptor
methods, in order to store the ObjectStreamClass elsewhere.  In Berkeley DB, overriding these
methods is necessary to store the ObjectStreamClass in a separate database, to avoid repeating
it redundantly in every database record.  This type of overriding is supported by the Java
specification, and the problem does not occur in other Java class libraries (specifically,
the bug does not occur on the Sun, IBM and BEA Java platforms).
> The attached test demonstrates the problem by simply serializing and deserializing an
object to/from a byte array, when readClassDescriptor and writeClassDescriptor are overridden.
 A NullPointerException occurs because of an uninitialized field during the call to readObject.
> C:\temp>java -classpath . ClassDescriptorOverrideBug
> java.lang.NullPointerException
>         at java.io.ObjectStreamField.resolve(ObjectStreamField.java:336)
>         at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1838)
>         at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:799)
>         at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2039)
>         at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:902)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2251)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2208)
>         at ClassDescriptorOverrideBug.doTest(ClassDescriptorOverrideBug.java:49)
>         at ClassDescriptorOverrideBug.main(ClassDescriptorOverrideBug.java:29)
> Note that this problem only occurs when primitive fields are declared in the serializable
class.
> A workaround for this bug is to serialize and deserialize the ObjectStreamClass before
it is used.  Apparently deserialization causes initialization to occur correctly.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message