Boost logo

Boost Users :

Subject: Re: [Boost-users] Segfault when trying to deserialize std::lists in a multi_array
From: Jiri Vyskocil (svzj_at_[hidden])
Date: 2011-07-28 18:13:42


OK. I tried to make a simple test case using the same structures as in
the code. It constructs a multi_array chose cells contain std::list,
which contains pointers to particles. Receiving worked flawlessly in
this minimal case.

I noticed, that the error occurs only once in a while. My simulation
program runs several timesteps and the particle sending does not
necessarily occur at every timestep, so I assumed, tthat when the error
occured, it was at the first call to the sending function, which (as I
realized just now) is actually not the case.

This means, that the error only occcurs when some specific data is being
sent. I will try to somehow determine what factors make the
deserialization in receive fail. (It would be nice if I knew a way to
look into the offending message).

Meanwhile, I got a longer backtrace from a program compiled with fewer
optimizations. It fails at the same point on two different systems, so
the problem is likely in my code (but no other part of the code has any
problems with those particle structures - inserting, deleting, moving
and accessing particles - everything works as expected)

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7935823 in
boost::archive::detail::basic_iarchive_impl::load_preamble(boost::archive::detail::basic_iarchive&, boost::archive::detail::basic_iarchive_impl::cobject_id&) () from /usr/lib/libboost_serialization.so.1.42.0
(gdb) bt
#0 0x00007ffff7935823 in
boost::archive::detail::basic_iarchive_impl::load_preamble(boost::archive::detail::basic_iarchive&, boost::archive::detail::basic_iarchive_impl::cobject_id&) () from /usr/lib/libboost_serialization.so.1.42.0
#1 0x00007ffff79368db in
boost::archive::detail::basic_iarchive_impl::load_pointer(boost::archive::detail::basic_iarchive&, void*&, boost::archive::detail::basic_pointer_iserializer const*, boost::archive::detail::basic_pointer_iserializer const* (*)(boost::serialization::extended_type_info const&)) () from /usr/lib/libboost_serialization.so.1.42.0
#2 0x0000000000456f4c in invoke<Particle*> (ar=..., s=...)
at /usr/include/boost/archive/detail/iserializer.hpp:512
#3 load<boost::mpi::packed_iarchive, Particle*> (ar=..., s=...)
at /usr/include/boost/archive/detail/iserializer.hpp:580
#4 load_override<Particle*> (ar=..., s=...)
at /usr/include/boost/archive/detail/common_iarchive.hpp:68
#5 load_override<Particle*> (ar=..., s=...)
at /usr/include/boost/archive/basic_binary_iarchive.hpp:67
#6 load_override<Particle*> (ar=..., s=...)
at /usr/include/boost/mpi/packed_iarchive.hpp:98
#7 load_override<Particle*> (ar=..., s=...)
at /usr/include/boost/mpi/packed_iarchive.hpp:115
#8 operator>><Particle*> (ar=..., s=...)
at /usr/include/boost/archive/detail/interface_iarchive.hpp:61
#9 load<boost::mpi::packed_iarchive> (ar=..., s=...)
at /usr/include/boost/serialization/nvp.hpp:87
#10 member_load<boost::mpi::packed_iarchive,
boost::serialization::nvp<Particle*> > (ar=..., s=...)
at /usr/include/boost/serialization/access.hpp:101
#11 invoke (ar=..., s=...)
at /usr/include/boost/serialization/split_member.hpp:54
#12 split_member<boost::mpi::packed_iarchive,
boost::serialization::nvp<Particle*> > (ar=..., s=...)
at /usr/include/boost/serialization/split_member.hpp:69
#13 serialize<boost::mpi::packed_iarchive> (ar=..., s=...)
at /usr/include/boost/serialization/nvp.hpp:89
#14 serialize<boost::mpi::packed_iarchive,
boost::serialization::nvp<Particle*> > (ar=..., s=...)
at /usr/include/boost/serialization/access.hpp:118
#15 serialize<boost::mpi::packed_iarchive,
boost::serialization::nvp<Particle*> > (ar=..., s=...)
at /usr/include/boost/serialization/serialization.hpp:74
#16 serialize_adl<boost::mpi::packed_iarchive,
boost::serialization::nvp<Particle*> > (ar=..., s=...)
at /usr/include/boost/serialization/serialization.hpp:133
#17 invoke<boost::serialization::nvp<Particle*> > (ar=..., s=...)
at /usr/include/boost/archive/detail/iserializer.hpp:367
#18 invoke<boost::serialization::nvp<Particle*> const> (ar=..., s=...)
at /usr/include/boost/archive/detail/iserializer.hpp:433
#19 load<boost::mpi::packed_iarchive,
boost::serialization::nvp<Particle*> const> (ar=..., s=...)
at /usr/include/boost/archive/detail/iserializer.hpp:580
#20 load_override<boost::serialization::nvp<Particle*> const> (ar=...,
s=...) at /usr/include/boost/archive/detail/common_iarchive.hpp:68
#21 load_override<boost::serialization::nvp<Particle*> const> (ar=...,
s=...) at /usr/include/boost/archive/basic_binary_iarchive.hpp:67
#22 load_override<boost::serialization::nvp<Particle*> const> (ar=...,
s=...) at /usr/include/boost/mpi/packed_iarchive.hpp:98
#23 load_override<boost::serialization::nvp<Particle*> const> (ar=...,
s=...) at /usr/include/boost/mpi/packed_iarchive.hpp:115
#24 operator>><const boost::serialization::nvp<Particle*> > (ar=...,
s=...) at /usr/include/boost/archive/detail/interface_iarchive.hpp:61
#25 operator() (ar=..., s=...)
at /usr/include/boost/serialization/collections_load_imp.hpp:63
#26
boost::serialization::stl::load_collection<boost::mpi::packed_iarchive,
std::list<Particle*>,
boost::serialization::stl::archive_input_seq<boost::mpi::packed_iarchive, std::list<Particle*> >, boost::serialization::stl::no_reserve_imp<std::list<Particle*> > > (ar=..., s=...) at /usr/include/boost/serialization/collections_load_imp.hpp:155
#27 0x000000000045717e in load<boost::mpi::packed_iarchive, Particle*,
std::allocator<Particle*> > (this=0x67af00, ar=..., x=0x9c8100,
file_version=0) at /usr/include/boost/serialization/list.hpp:48
#28 invoke (this=0x67af00, ar=..., x=0x9c8100, file_version=0)
at /usr/include/boost/serialization/split_free.hpp:58
#29 split_free<boost::mpi::packed_iarchive, std::list<Particle*> >
(this=0x67af00, ar=..., x=0x9c8100, file_version=0)
at /usr/include/boost/serialization/split_free.hpp:74
#30 serialize<boost::mpi::packed_iarchive, Particle*,
std::allocator<Particle*> > (this=0x67af00, ar=..., x=0x9c8100,
file_version=0) at /usr/include/boost/serialization/list.hpp:67
#31 serialize_adl<boost::mpi::packed_iarchive, std::list<Particle*> >
(this=0x67af00, ar=..., x=0x9c8100, file_version=0)
at /usr/include/boost/serialization/serialization.hpp:133
#32 boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
std::list<Particle*, std::allocator<Particle*> > >::load_object_data
(this=0x67af00, ar=..., x=0x9c8100, file_version=0)
at /usr/include/boost/archive/detail/iserializer.hpp:182
#33 0x00007ffff7935d6d in
boost::archive::detail::basic_iarchive::load_object(void*,
boost::archive::detail::basic_iserializer const&) ()
from /usr/lib/libboost_serialization.so.1.42.0
#34 0x0000000000454230 in invoke<std::list<Particle*> > (this=<value
optimized out>, ar=...)
at /usr/include/boost/archive/detail/iserializer.hpp:381
#35 invoke<std::list<Particle*> > (this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/iserializer.hpp:433
#36 load<boost::mpi::packed_iarchive, std::list<Particle*> >
(this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/iserializer.hpp:580
#37 load_override<std::list<Particle*> > (this=<value optimized out>,
ar=...) at /usr/include/boost/archive/detail/common_iarchive.hpp:68
#38 load_override<std::list<Particle*> > (this=<value optimized out>,
ar=...) at /usr/include/boost/archive/basic_binary_iarchive.hpp:67
#39 load_override<std::list<Particle*> > (this=<value optimized out>,
ar=...) at /usr/include/boost/mpi/packed_iarchive.hpp:98
#40 load_override<std::list<Particle*> > (this=<value optimized out>,
ar=...) at /usr/include/boost/mpi/packed_iarchive.hpp:115
#41 operator>><std::list<Particle*> > (this=<value optimized out>,
ar=...) at /usr/include/boost/archive/detail/interface_iarchive.hpp:61
#42 load<boost::mpi::packed_iarchive> (this=<value optimized out>,
ar=...) at /usr/include/boost/serialization/nvp.hpp:87
#43 member_load<boost::mpi::packed_iarchive,
boost::serialization::nvp<std::list<Particle*> > > (this=<value
optimized out>, ar=...)
at /usr/include/boost/serialization/access.hpp:101
#44 invoke (this=<value optimized out>, ar=...)
at /usr/include/boost/serialization/split_member.hpp:54
#45 split_member<boost::mpi::packed_iarchive,
boost::serialization::nvp<std::list<Particle*> > > (this=<value
optimized out>, ar=...)
at /usr/include/boost/serialization/split_member.hpp:69
#46 serialize<boost::mpi::packed_iarchive> (this=<value optimized out>,
ar=...) at /usr/include/boost/serialization/nvp.hpp:89
#47 serialize<boost::mpi::packed_iarchive,
boost::serialization::nvp<std::list<Particle*> > > (this=<value
optimized out>, ar=...)
at /usr/include/boost/serialization/access.hpp:118
#48 serialize<boost::mpi::packed_iarchive,
boost::serialization::nvp<std::list<Particle*> > > (this=<value
optimized out>, ar=...)
at /usr/include/boost/serialization/serialization.hpp:74
#49 serialize_adl<boost::mpi::packed_iarchive,
boost::serialization::nvp<std::list<Particle*> > > (this=<value
optimized out>, ar=...)
at /usr/include/boost/serialization/serialization.hpp:133
#50 invoke<boost::serialization::nvp<std::list<Particle*> > >
(this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/iserializer.hpp:367
#51 invoke<boost::serialization::nvp<std::list<Particle*> > const>
(this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/iserializer.hpp:433
#52 load<boost::mpi::packed_iarchive,
boost::serialization::nvp<std::list<Particle*> > const> (this=<value
optimized out>, ar=...)
at /usr/include/boost/archive/detail/iserializer.hpp:580
#53 load_override<boost::serialization::nvp<std::list<Particle*> >
const> (this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/common_iarchive.hpp:68
#54 load_override<boost::serialization::nvp<std::list<Particle*> >
const> (this=<value optimized out>, ar=...)
at /usr/include/boost/archive/basic_binary_iarchive.hpp:67
#55 load_override<boost::serialization::nvp<std::list<Particle*> >
const> (this=<value optimized out>, ar=...)
at /usr/include/boost/mpi/packed_iarchive.hpp:98
#56 load_override<boost::serialization::nvp<std::list<Particle*> >
const> (this=<value optimized out>, ar=...)
at /usr/include/boost/mpi/packed_iarchive.hpp:115
#57 operator>><const boost::serialization::nvp<std::list<Particle*> > >
(this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/interface_iarchive.hpp:61
#58 operator&<const boost::serialization::nvp<std::list<Particle*> > >
(this=<value optimized out>, ar=...)
at /usr/include/boost/archive/detail/interface_iarchive.hpp:68
#59 boost::serialization::array<std::list<Particle*,
std::allocator<Particle*> >
>::serialize_optimized<boost::mpi::packed_iarchive> (this=<value
optimized out>, ar=...) at /usr/include/boost/serialization/array.hpp:72
#60 0x0000000000455499 in serialize<boost::mpi::packed_iarchive>
(ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/serialization/array.hpp:104
#61 serialize<boost::mpi::packed_iarchive,
boost::serialization::array<std::list<Particle*> > > (ar=..., t=...,
file_version=<value optimized out>)
at /usr/include/boost/serialization/access.hpp:118
#62 serialize<boost::mpi::packed_iarchive,
boost::serialization::array<std::list<Particle*> > > (ar=..., t=...,
file_version=<value optimized out>)
at /usr/include/boost/serialization/serialization.hpp:74
#63 serialize_adl<boost::mpi::packed_iarchive,
boost::serialization::array<std::list<Particle*> > > (ar=..., t=...,
file_version=<value optimized out>)
at /usr/include/boost/serialization/serialization.hpp:133
#64 invoke<boost::serialization::array<std::list<Particle*> > > (ar=...,
t=..., file_version=<value optimized out>)
at /usr/include/boost/archive/detail/iserializer.hpp:367
#65 invoke<boost::serialization::array<std::list<Particle*> > const>
(ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/archive/detail/iserializer.hpp:433
#66 load<boost::mpi::packed_iarchive,
boost::serialization::array<std::list<Particle*> > const> (ar=...,
t=..., file_version=<value optimized out>)
at /usr/include/boost/archive/detail/iserializer.hpp:580
#67 load_override<boost::serialization::array<std::list<Particle*> >
const> (ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/archive/detail/common_iarchive.hpp:68
#68 load_override<boost::serialization::array<std::list<Particle*> >
const> (ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/archive/basic_binary_iarchive.hpp:67
#69 load_override<boost::serialization::array<std::list<Particle*> >
const> (ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/mpi/packed_iarchive.hpp:98
#70 load_override<boost::serialization::array<std::list<Particle*> >
const> (ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/mpi/packed_iarchive.hpp:115
#71 operator>><const boost::serialization::array<std::list<Particle*> >
> (ar=..., t=..., file_version=<value optimized out>)
at /usr/include/boost/archive/detail/interface_iarchive.hpp:61
#72 boost::serialization::load<boost::mpi::packed_iarchive,
std::list<Particle*> > (ar=..., t=..., file_version=<value optimized
out>) at ~/opice/src/include/multi_array_serialize.h:35
#73 0x000000000045555e in invoke (this=0x67b1b0, ar=...,
x=0x7fffffffd970, file_version=0)
at /usr/include/boost/serialization/split_free.hpp:58
#74 split_free<boost::mpi::packed_iarchive,
boost::multi_array<std::list<Particle*>, 3ul> > (this=0x67b1b0, ar=...,
x=0x7fffffffd970, file_version=0)
at /usr/include/boost/serialization/split_free.hpp:74
#75 serialize<boost::mpi::packed_iarchive, std::list<Particle*> >
(this=0x67b1b0, ar=..., x=0x7fffffffd970, file_version=0) at
~/opice/src/include/multi_array_serialize.h:56
#76 serialize_adl<boost::mpi::packed_iarchive,
boost::multi_array<std::list<Particle*>, 3ul> > (this=0x67b1b0, ar=...,
x=0x7fffffffd970, file_version=0)
at /usr/include/boost/serialization/serialization.hpp:133
#77 boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
boost::multi_array<std::list<Particle*, std::allocator<Particle*> >,
3ul, std::allocator<std::list<Particle*, std::allocator<Particle*> > > >
>::load_object_data (this=0x67b1b0, ar=..., x=0x7fffffffd970,
file_version=0) at /usr/include/boost/archive/detail/iserializer.hpp:182
#78 0x00007ffff7935d6d in
boost::archive::detail::basic_iarchive::load_object(void*,
boost::archive::detail::basic_iserializer const&) ()
from /usr/lib/libboost_serialization.so.1.42.0
#79 0x0000000000452121 in
invoke<boost::multi_array<std::list<Particle*>, 3ul> > (this=0x705f60,
source=1, tag=3, value=...)
at /usr/include/boost/archive/detail/iserializer.hpp:381
#80 invoke<boost::multi_array<std::list<Particle*>, 3ul> >
(this=0x705f60, source=1, tag=3, value=...)
at /usr/include/boost/archive/detail/iserializer.hpp:433
#81 load<boost::mpi::packed_iarchive,
boost::multi_array<std::list<Particle*>, 3ul> > (this=0x705f60,
source=1, tag=3, value=...)
at /usr/include/boost/archive/detail/iserializer.hpp:580
#82 load_override<boost::multi_array<std::list<Particle*>, 3ul> >
(this=0x705f60, source=1, tag=3, value=...)
at /usr/include/boost/archive/detail/common_iarchive.hpp:68
#83 load_override<boost::multi_array<std::list<Particle*>, 3ul> >
(this=0x705f60, source=1, tag=3, value=...)
at /usr/include/boost/archive/basic_binary_iarchive.hpp:67
#84 load_override<boost::multi_array<std::list<Particle*>, 3ul> >
(this=0x705f60, source=1, tag=3, value=...)
at /usr/include/boost/mpi/packed_iarchive.hpp:98
#85 load_override<boost::multi_array<std::list<Particle*>, 3ul> >
(this=0x705f60, source=1, tag=3, value=...)
at /usr/include/boost/mpi/packed_iarchive.hpp:115
#86 operator>><boost::multi_array<std::list<Particle*>, 3ul> >
(this=0x705f60, source=1, tag=3, value=...)
at /usr/include/boost/archive/detail/interface_iarchive.hpp:61
#87
boost::mpi::communicator::recv_impl<boost::multi_array<std::list<Particle*>, 3ul> > (this=0x705f60, source=1, tag=3, value=...) at /usr/include/boost/mpi/communicator.hpp:1191
#88 0x000000000045220c in
boost::mpi::communicator::recv<boost::multi_array<std::list<Particle*>,
3ul> > (this=<value optimized out>, source=<value optimized out>,
tag=<value optimized out>, value=<value optimized out>)
at /usr/include/boost/mpi/communicator.hpp:1201
#89 0x000000000044ecda in Communicator::receive (this=0x67e150,
slice=0x893cb0, pack_type=TYPE_PART, sendnum=1) at
~/opice/src/communicator.cpp:62
#90 0x0000000000457d8a in BorderComm::receive_particles (this=<value
optimized out>) at ~/opice/src/border_comm.cpp:73
#91 0x000000000043844a in Boundary::particles (this=0x893970) at
~/opice/src/boundary.cpp:253
#92 0x000000000044bf56 in LeapFrog::move (this=0x67e170) at
~/opice/src/particle_leap_frog.cpp:128
#93 0x0000000000440029 in Experiment::run (this=0x67e0c0) at
~/opice/src/experiment.cpp:96
#94 0x000000000042f940 in main (argc=1, argv=0x7fffffffdf28) at
~/opice/src/opice.cpp:29
(gdb)

On Mon, 2011-07-25 at 01:44 +0200, Jiří Vyskočil wrote:
> Hello, I'm working on a parallel physical simulation involving particles
> in a 3D grid.
>
> In addition to Boost libraries, I use the Eigen3 template library for
> holding numerical data in small 3-vectors.
>
> I'm trying to send a 3D boost::multi_array containing std::list of
> pointers to particle structs via boost::mpi and keep getting a segfault
> on receive.
>
> Sending and receiving boost::multi_array of V3D Eigen3 vectors works fine.
>
> Serialization functions for multi_array are from
> http://tinyurl.com/3koafmr (edited for 3 dimensions, seems to work)
> Serializing Eigen Vector3d type (seems to work):
>
> friend class boost::serialization::access;
> template<class Archive>
> inline void serialize(Archive & ar, const unsigned int file_version) {
> ar & m_coeffs.x();
> ar & m_coeffs.y();
> ar & m_coeffs.z();
> }
>
> typedef Vector3d V3D; //Convenience typedef for Eigen3 vector
>
> struct Particle {
> V3D r, u;
> double m, q;
> unsigned number;
>
> friend class boost::serialization::access;
> template<class Archive>
> void serialize(Archive & ar, const unsigned int file_version) {
> ar & r; ar & u;
> ar & m; ar & q;
> ar & number;
> }
> };
>
>
> Sending point:
>
> typedef boost::multi_array<std::list<Particle*>, 3> ParticleArray;
>
> ParticleArray part_array(boost::extents[x][y][z]);
> ...fill the array with particles, some cells might be empty...
> world->isend(recnum, pack_type, part_array);
>
>
> Receiving point:
>
> ParticleArray
> part_array(boost::extents[slice->shape()[0]][slice->shape()[1]][slice->shape()[2]]);
> world->recv(sendnum, pack_type, part_array);
>
>
> When I get here, it segfaults:
>
> terminate called after throwing an instance of
> 'boost::archive::archive_exception'
> what(): class version
> # 0 0
> Program received signal SIGABRT, Aborted.
> 0x00007ffff5a29a25 in raise () from /lib64/libc.so.6
> (gdb) bt
> #0 0x00007ffff5a29a25 in raise () from /lib64/libc.so.6
> #1 0x00007ffff5a2b0af in abort () from /lib64/libc.so.6
> #2 0x00007ffff64fb695 in __gnu_cxx::__verbose_terminate_handler () at
> /var/tmp/portage/sys-devel/gcc-4.4.5/work/gcc-4.4.5/libstdc++-v3/libsupc++/vterminate.cc:93
> #3 0x00007ffff64f9ac6 in __cxxabiv1::__terminate (handler=0x70d) at
> /var/tmp/portage/sys-devel/gcc-4.4.5/work/gcc-4.4.5/libstdc++-v3/libsupc++/eh_terminate.cc:38
> #4 0x00007ffff64f9af3 in std::terminate () at
> /var/tmp/portage/sys-devel/gcc-4.4.5/work/gcc-4.4.5/libstdc++-v3/libsupc++/eh_terminate.cc:48
> #5 0x00007ffff64f9bee in __cxxabiv1::__cxa_throw (obj=<value optimized
> out>, tinfo=<value optimized out>, dest=<value optimized out>) at
> /var/tmp/portage/sys-devel/gcc-4.4.5/work/gcc-4.4.5/libstdc++-v3/libsupc++/eh_throw.cc:83
> #6 0x000000000044f7d5 in
> boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
> Particle>::load_object_data(boost::archive::detail::basic_iarchive&,
> void*, unsigned int) const ()
> #7 0x00007ffff794173b in load_object (this=0x7fffffffcae0, t=<value
> optimized out>, bis=...) at libs/serialization/src/basic_iarchive.cpp:367
> #8 boost::archive::detail::basic_iarchive::load_object
> (this=0x7fffffffcae0, t=<value optimized out>, bis=...) at
> libs/serialization/src/basic_iarchive.cpp:547
> #9 0x000000000044f662 in
> boost::archive::detail::pointer_iserializer<boost::mpi::packed_iarchive,
> Particle>::load_object_ptr(boost::archive::detail::basic_iarchive&,
> void*&, unsigned int) const ()
> #10 0x00007ffff7941c50 in load_pointer (this=0x7fffffffcae0,
> t=@0x7fffffffc880, bpis_ptr=0x668060, finder=<value optimized out>) at
> libs/serialization/src/basic_iarchive.cpp:494
> #11 boost::archive::detail::basic_iarchive::load_pointer
> (this=0x7fffffffcae0, t=@0x7fffffffc880, bpis_ptr=0x668060,
> finder=<value optimized out>) at
> libs/serialization/src/basic_iarchive.cpp:560
> #12 0x000000000044ed6f in
> boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
> std::list<Particle*, std::allocator<Particle*> >
> >::load_object_data(boost::archive::detail::basic_iarchive&, void*,
> unsigned int) const ()
> #13 0x00007ffff79416fa in load_object (this=0x7fffffffcae0, t=<value
> optimized out>, bis=...) at libs/serialization/src/basic_iarchive.cpp:399
> #14 boost::archive::detail::basic_iarchive::load_object
> (this=0x7fffffffcae0, t=<value optimized out>, bis=...) at
> libs/serialization/src/basic_iarchive.cpp:547
> #15 0x000000000044ffb4 in
> boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
> boost::multi_array<std::list<Particle*, std::allocator<Particle*> >,
> 3ul, std::allocator<std::list<Particle*, std::allocator<Particle*> > > >
> >::load_object_data(boost::archive::detail::basic_iarchive&, void*,
> unsigned int) const ()
> #16 0x00007ffff79416fa in load_object (this=0x7fffffffcae0, t=<value
> optimized out>, bis=...) at libs/serialization/src/basic_iarchive.cpp:399
> #17 boost::archive::detail::basic_iarchive::load_object
> (this=0x7fffffffcae0, t=<value optimized out>, bis=...) at
> libs/serialization/src/basic_iarchive.cpp:547
> #18 0x00000000004516f9 in boost::mpi::status
> boost::mpi::communicator::recv_impl<boost::multi_array<std::list<Particle*,
> std::allocator<Particle*> >, 3ul, std::allocator<std::list<Particle*,
> std::allocator<Particle*> > > > >(int, int,
> boost::multi_array<std::list<Particle*, std::allocator<Particle*> >,
> 3ul, std::allocator<std::list<Particle*, std::allocator<Particle*> > >
> >&, mpl_::bool_<false>) const ()
> #19 0x000000000044982d in recv<ParticleArray> (this=0x66b150,
> slice=0x8779e0, pack_type=<value optimized out>, sendnum=1) at
> /usr/include/boost/mpi/communicator.hpp:1201
> #20 Communicator::receive (this=0x66b150, slice=0x8779e0,
> pack_type=<value optimized out>, sendnum=1) at
> /home/strazce/prog/opice/opice/src/communicator.cpp:62
> #21 0x000000000043d512 in Experiment::run (this=0x66b0c0) at
> /home/strazce/prog/opice/opice/src/experiment.cpp:96
> #22 0x000000000042c13c in main (argc=1, argv=0x7fffffffd158) at
> /home/strazce/prog/opice/opice/src/opice.cpp:29
> (gdb)
>
>
> Again, this error only shows when receiving the multi_array of
> std::list<Particle*>. multi_array of V3D is received fine.
>
> Thanks for any help,
> Jiri Vyskocil


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net