Boost logo

Boost :

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk