Subject: Re: [boost] [serialization][mpi] mpi library doesn't compile due to serialization problems with 1.44
From: Matthias Troyer (troyer_at_[hidden])
Date: 2010-08-23 05:41:55


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