
I just want to confirm I have the same issue with boost 1.41.0 built with MSVC 9.0 (Visual Studio 2008). I have created two tests similar to the one Christoph describes ( both with and without DLLs) and I hit exactly the same assert in basic_serializer_map::find(). It looks like while deserializing B via A*, basic_iarchive_impl::load_pointer() is trying to recover a serializer from: boost::serialization::singleton< boost::archive::detail::archive_serializer_map<boost::archive::naked_xml_iar chive> > (or boost::serialization::singleton< boost::archive::detail::archive_serializer_map<boost::archive::naked_text_ia rchive> >, depending on the input archive actually used) but that map is empty. I checked boost::serialization::singleton< boost::archive::detail::archive_serializer_map<boost::archive::polymorphic_i archive> > in the first line of my program and it contains correctly two serializers (one for A and one for B, respectively), proving that the macro BOOST_CLASS_EXPORT_IMPLEMENT(.) has registered those classes. I am not sure why the serializers for A and B do not register with the specific polymorphic archives but only with the base archive. I was under the impression that the polymorphic archives are meant to make that process transparent to the user (especially future archives that are created later). I appreciate any feedback about this issue and please let me know if you need more details. Thank you, Bogdan PS I am using extended type_info_no_rtti. Deserializing via isomorphic pointers (B*->ser->dser->B*) is working.