-
Notifications
You must be signed in to change notification settings - Fork 6
Error serializing ObjectMapper - StackOverflowError #4
Description
For some reason ObjectMapper serialization to a cache file on Android isn't working, even though it works fine on J2SE.
Here's the error:
11-30 14:15:48.308: I/dalvikvm(30482): threadid=20: stack overflow on call to Ljava/io/SerializationHandleMap;.findIndex:ILL
11-30 14:15:48.308: I/dalvikvm(30482): method requires 28+20+12=60 bytes, fp is 0x59106338 (56 left)
11-30 14:15:48.308: I/dalvikvm(30482): expanding stack end (0x59106300 to 0x59106000)
11-30 14:15:48.308: I/dalvikvm(30482): Shrank stack (to 0x59106300, curFrame is 0x591064c8)
11-30 14:15:48.308: W/dalvikvm(30482): threadid=20: thread exiting with uncaught exception (group=0x415b6438)
11-30 14:15:48.348: E/AndroidRuntime(30482): FATAL EXCEPTION: Thread-6998
11-30 14:15:48.348: E/AndroidRuntime(30482): java.lang.StackOverflowError
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.SerializationHandleMap.get(SerializationHandleMap.java:63)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.dumpCycle(ObjectOutputStream.java:425)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1566)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1612)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeNewArray(ObjectOutputStream.java:1205)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1662)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
11-30 14:15:48.348: E/AndroidRuntime(30482): at java.io.ObjectOutputStream.writeFiel
Code triggering the problem, which is executed by the SiriRestClientUI app via this library:
https://github.com/CUTR-at-USF/SiriRestClient/blob/master/src/edu/usf/cutr/siri/android/client/config/SiriJacksonConfig.java#L407
Comparable code on J2SE that works fine is:
https://github.com/CUTR-at-USF/SiriParserJacksonExample/blob/master/src/edu/usf/cutr/siri/util/SiriUtils.java#L718