Hello, Robert! You wrote on Fri, 1 Jul 2005 10:04:35 -0700: RR> Any violation of assert is indication of a programming error (at least RR> in the way I intend to use it). Yes, I am understand this. But I can not understand what kind of error this assert indicates. RR> So send me some more information including boost version, compiler RR> version, etc. compiler - MS VC 7.1, boost 1.32. XML archive was used. RR> If you can send a small test case that is also immensily helpful. Unfortunately, I can't isolate problem. I had never see this error on my computer but only got reports from my colleagues, who are working at another city. ??>> sometimes I got errors in basic_iarchive_impl::load_pointer in line ??>> assert(new_cid == cid). ??>> Can anyone tell me what exactly this assertion means and whan it can ??>> occurs? Is this error posiible if I remove some BOOST_CLASS_EXPORTs ??>> from my code and try to load old files? RR> Trying to load an archive with one set of traits from a archive saved RR> with another set of traits would generally not work without making RR> special arrangements to read the "old" archives. That is, saving one RR> way and loading another way cannot be generally expected to work and RR> should give an exception. Ok, we are using class versioning to support loading of older versions of classes. Can we remove obsolete classes (serialized by pointer to base) from time to time or this will break reading archives even if no instances of such classes was used during writing? I see some class names and numeric ids for classes in archives but I'm not sure that these names or ids used for polymorphic loading. Of course, if ids used, we should not remove any class that marked with BOOST_CLASS_EXPORT macro, but if class names used, I see no reasons why we can't drop obsolete classes. With best regards, Sergey.