After I did some exception handling, it turned out that during serialization some unregistered void cast was happening and that's causing stream error. Probably debugger was pointing to wrong frame :( After fixing those exception, crash is resolved. But I've new problem - serialize doesn't write all data. And it seems the problem is because of some ABC. Let me explain it here: I've following class structure A <--+-- B | +-- C A is ABC and has no data member. B and C has data member. Some class D has vector as data member. And my serialization code is something like following: D *dObj = D::instance(); oparchive << (const D&)(*dObj); De-serialization code is something like following: D::cleanup(); D *dObj = D::instance(); iparchive >> (*dObj); I declare A as abstract through BOOST_IS_ABSTRACT. However, I also write an empty serialize() for A. Also, B and C serialization() uses base_object (*this). And B and C are exported too. Seems to me, the empty A::serialize() is causing the problem. But if I remove it, the code doesn't compile unless I remove base_object (*this) from B::serialize() and C::serialize(). I've verified that number of A objects in D after deserialization is same as the number before serialization. But those B or C objects (deserialised through A*) seems empty. Regards, ~ Soumen -- View this message in context: http://www.nabble.com/-serialization---newbie--serializing-deserializing-sin... Sent from the Boost - Users mailing list archive at Nabble.com.