You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Cameron Biggelaar <ca...@vanzyl.com.au> on 2000/07/31 06:09:43 UTC
Solaris Serialization Bug (with the JIT turned on)
Hi,
I want to report a serialization bug, it has been reported previously as
intermittent (if it's the same one that is) but I can reproduce it in my
environment. It is only visible under the Solaris JDK with the JIT turned
on, I have only tested on jdk1.2.2_006.
Essentially I'm using a hashtable to store some user settings and
persisting the hashtable to disk using Object Serialization. The object
hierarchy is as follows:
Hastable
|
|---Custom Object1
| |
|--- Vector
| |
|--Custom Object2
|
|--- Node1
|--- Node 2
I am only storing a minimal amount of data, 2 Custom Object1's and 2 Custom
Object2's, the nodes contain around 30 fields each.
On windows 2000 it works fine. Moving the code to Solaris and then saving
an entry to this file (new or old) causes a stack overflow error at the
Node level. To get around the problem I have implemented the readObject(),
writeObject() methods and am Serializing the Nodes as Strings. Upon trying
to get the stack trace for this report I turned off the JIT on Solaris and
the problem disappears! I have not reported this as a bug to Sun.
I have also tried the straight Serialization of a Node or Document under
Solaris and had no problems.
This bug/issue is no problem for me because I'm using the Hashtable as a
temporary data store which will be re-implemented later.
I'm Using Windows 2000, JDK1.2.2_006 xalan 1.0, xerces 1.0. to develop on
(no bug)
I'm using Solaris 2.7 JDK 1.2.2_006 for deployment/testing.
Thanks Cameron
Stack trace is:
java.lang.StackOverflowError at
java.io.ObjectOutputStream.drain(ObjectOutputStream.java, Compiled Code) at
java.io.ObjectOutputStream.setBlockData(ObjectOutputStream.java, Compiled
Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at org.apache.xerces.dom.NodeImpl.writeObject(NodeImpl.java,
Compiled Code) at java.lang.reflect.Method.invoke(Native Method) at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at org.apache.xerces.dom.NodeImpl.writeObject(NodeImpl.java,
Compiled Code) at java.lang.reflect.Method.invoke(Native Method) at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at
X 20
org.apache.xerces.dom.NodeImpl.writeObject(NodeImpl.java, Compiled Code) at
java.lang.reflect.Method.invoke(Native Method) at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at
org.apache.xerces.dom.NodeContainer.writeObject(NodeContainer.java,
Compiled Code) at java.lang.reflect.Method.invoke(Native Method) at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java, Compiled
Code) at
java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java, Compiled
Code) at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java, Compiled
Code) at
java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java, Compiled
Code) at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at java.util.Hashtable.writeObject(Hashtable.java, Compiled
Code) at java.lang.reflect.Method.invoke(Native Method) at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at java.util.Hashtable.writeObject(Hashtable.java, Compiled
Code) at java.lang.reflect.Method.invoke(Native Method) at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java,
Compiled Code) at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java, Compiled
Code) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java,
Compiled Code) at
au.com.distinct.utility.CollectionUtil.save(CollectionUtil.java, Compiled
Code) at
au.com.distinct.udr.demo.PersistanceService.save(PersistanceService.java,
Compiled Code)