
Hey boost users, I've hit what I figure is a compiler bug with release 1.33.1 under gcc 3.2, I'm trying to come up with a workaround. I modified test_exported.cpp from the serialization test suite to serialize via shared_ptr<polymorphic_base> to base rather than polymorphic_base*, and I've verified that the test runs fine on several platforms with gcc 4.0 and 3.4, but fails with 3.2. I'd love to just abandon 3.2, but unfortunately the hosts that require it are (literally) at the South Pole. The error reported is: execute-test ../../../bin/boost/libs/serialization/test/test_exported_binary_archive.test/gcc/debug/test_exported_binary_archive.run ====== BEGIN OUTPUT ====== test_exported_binary_archive: /icework/troy/boost_1_33_1/libs/serialization/src/basic_iarchive.cpp:466: const boost::archive::detail::basic_pointer_iserializer* boost::archive::detail::basic_iarchive_impl::load_pointer(boost::archive::detail::basic_iarchive&, void*&, const boost::archive::detail::basic_pointer_iserializer*, const boost::archive::detail::basic_pointer_iserializer*(*)(const boost::serialization::extended_type_info&)): Assertion `new_cid == cid' failed. Running 1 test case... unknown location(0): fatal error in "test_main_caller( argc, argv )": signal: SIGABRT (application abort requested) *** errors detected in test suite "Test Program"; see standard output for details EXIT STATUS: 200 ====== END OUTPUT ====== Which indicates that something has gone wrong with registration, it seems. One can toggle the buggy behavior by removing BOOST_IS_ABSTRACT(polymorphic_base). Whether polymorphic_base actually has a pure virtual function doesn't influence whether the error appears or not. I'm going to keep digging, but I thought I'd ask if this rings a bell with anyone. Modified test_exported.cpp attached. Thanks in advance, -t