[serialization][mpi] mpi library doesn't compile due to serialization problems with 1.44

I'm trying to build 1.44 on Fedora 13 (gcc 4.4.4), and get the following compiler error: gcc.compile.c++ bin.v2/libs/mpi/build/gcc-4.4.4/release/link-static/threading-multi/broadcast.o In file included from ./boost/mpi/packed_iarchive.hpp:27, from ./boost/mpi/communicator.hpp:28, from ./boost/mpi/collectives.hpp:22, from ./boost/mpi/collectives_fwd.hpp:20, from ./boost/mpi/collectives/broadcast.hpp:12, from libs/mpi/src/broadcast.cpp:10: ./boost/mpi/detail/binary_buffer_iprimitive.hpp: In member function 'void boost::mpi::binary_buffer_iprimitive::load(T&) [with T = boost::archive::version_type]': ./boost/archive/detail/iserializer.hpp:107: instantiated from 'static void boost::archive::load_access::load_primitive(Archive&, T&) [with Archive = boost::mpi::packed_iarchive, T = boost::archive::version_type]' ./boost/archive/detail/iserializer.hpp:356: instantiated from 'static void boost::archive::detail::load_non_pointer_type<Archive>::load_primitive::invoke(Archive&, T&) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/archive/detail/iserializer.hpp:433: instantiated from 'static void boost::archive::detail::load_non_pointer_type<Archive>::invoke(Archive&, T&) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/archive/detail/iserializer.hpp:586: instantiated from 'void boost::archive::load(Archive&, T&) [with Archive = boost::mpi::packed_iarchive, T = boost::archive::version_type]' ./boost/archive/detail/common_iarchive.hpp:66: instantiated from 'void boost::archive::detail::common_iarchive<Archive>::load_override(T&, int) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/mpi/packed_iarchive.hpp:101: instantiated from 'void boost::mpi::packed_iarchive::load_override(T&, int, mpl_::false_) [with T = boost::archive::version_type]' ./boost/mpi/packed_iarchive.hpp:118: instantiated from 'void boost::mpi::packed_iarchive::load_override(T&, int) [with T = boost::archive::version_type]' ./boost/archive/detail/interface_iarchive.hpp:60: instantiated from 'Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/archive/detail/common_iarchive.hpp:45: instantiated from 'void boost::archive::detail::common_iarchive<Archive>::vload(boost::archive::version_type&) [with Archive = boost::mpi::packed_iarchive]' libs/mpi/src/broadcast.cpp:151: instantiated from here ./boost/mpi/detail/binary_buffer_iprimitive.hpp:87: error: no matching function for call to 'assertion_failed(mpl_::failed************ boost::serialization::is_bitwise_serializable<boost::archive::version_type>::************)' ./boost/mpi/detail/ The assertion also trips on: boost::serialization::is_bitwise_serializable<boost::archive::object_id_type> boost::serialization::is_bitwise_serializable<boost::archive::class_id_type> boost::serialization::is_bitwise_serializable<boost::archive::class_id_optional_type> boost::serialization::is_bitwise_serializable<boost::archive::tracking_type> Having looked at the source, I see that these types are indeed non-POD classes and I can't find the is_bitwise_serializable trait applied anywhere. Am I missing something? Thanks, Simon H.

On Aug 23, 2010, at 10:40 AM, Number Cruncher wrote:
I'm trying to build 1.44 on Fedora 13 (gcc 4.4.4), and get the following compiler error: gcc.compile.c++ bin.v2/libs/mpi/build/gcc-4.4.4/release/link-static/threading-multi/broadcast.o In file included from ./boost/mpi/packed_iarchive.hpp:27, from ./boost/mpi/communicator.hpp:28, from ./boost/mpi/collectives.hpp:22, from ./boost/mpi/collectives_fwd.hpp:20, from ./boost/mpi/collectives/broadcast.hpp:12, from libs/mpi/src/broadcast.cpp:10: ./boost/mpi/detail/binary_buffer_iprimitive.hpp: In member function 'void boost::mpi::binary_buffer_iprimitive::load(T&) [with T = boost::archive::version_type]': ./boost/archive/detail/iserializer.hpp:107: instantiated from 'static void boost::archive::load_access::load_primitive(Archive&, T&) [with Archive = boost::mpi::packed_iarchive, T = boost::archive::version_type]' ./boost/archive/detail/iserializer.hpp:356: instantiated from 'static void boost::archive::detail::load_non_pointer_type<Archive>::load_primitive::invoke(Archive&, T&) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/archive/detail/iserializer.hpp:433: instantiated from 'static void boost::archive::detail::load_non_pointer_type<Archive>::invoke(Archive&, T&) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/archive/detail/iserializer.hpp:586: instantiated from 'void boost::archive::load(Archive&, T&) [with Archive = boost::mpi::packed_iarchive, T = boost::archive::version_type]' ./boost/archive/detail/common_iarchive.hpp:66: instantiated from 'void boost::archive::detail::common_iarchive<Archive>::load_override(T&, int) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/mpi/packed_iarchive.hpp:101: instantiated from 'void boost::mpi::packed_iarchive::load_override(T&, int, mpl_::false_) [with T = boost::archive::version_type]' ./boost/mpi/packed_iarchive.hpp:118: instantiated from 'void boost::mpi::packed_iarchive::load_override(T&, int) [with T = boost::archive::version_type]' ./boost/archive/detail/interface_iarchive.hpp:60: instantiated from 'Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = boost::archive::version_type, Archive = boost::mpi::packed_iarchive]' ./boost/archive/detail/common_iarchive.hpp:45: instantiated from 'void boost::archive::detail::common_iarchive<Archive>::vload(boost::archive::version_type&) [with Archive = boost::mpi::packed_iarchive]' libs/mpi/src/broadcast.cpp:151: instantiated from here ./boost/mpi/detail/binary_buffer_iprimitive.hpp:87: error: no matching function for call to 'assertion_failed(mpl_::failed************ boost::serialization::is_bitwise_serializable<boost::archive::version_type>::************)' ./boost/mpi/detail/
The assertion also trips on: boost::serialization::is_bitwise_serializable<boost::archive::object_id_type> boost::serialization::is_bitwise_serializable<boost::archive::class_id_type> boost::serialization::is_bitwise_serializable<boost::archive::class_id_optional_type> boost::serialization::is_bitwise_serializable<boost::archive::tracking_type>
Having looked at the source, I see that these types are indeed non-POD classes and I can't find the is_bitwise_serializable trait applied anywhere.
Am I missing something?
This unfortunately did not show up in any of the regression tests. I can try to fix it as soon as the Boost.Serialization compilation issues on the trunk are resolved. Matthias
participants (2)
-
Matthias Troyer
-
Number Cruncher