Boost logo

Boost Users :

Subject: [Boost-users] Boost::MPI Enum Bug
From: Barker, Daniel (d.barker11_at_[hidden])
Date: 2013-08-16 09:29:08


Hi All,

I am writing some software which is using boost::mpi. I think I have run into a slight bug (or at least a limitation) with the library.

It is very similar to this question on S/O:
http://stackoverflow.com/questions/8127442/sending-complex-data-with-skeleton-content-mechanism-in-boost-mpi

I am sending/receiving a class which has an enum member variable. Using normal send and receive was working fine but then I tried to use the skeleton/content mechanism and now my program failed with a segfault on calling `communicator::isend` with the content. While compiling, the compiler issued a warning about an uninitizialized variable:

/home/dan/boost_1_54_0/boost/archive/detail/iserializer.hpp:539:9: warning: ‘i’ may be used uninitialized in this function [-Wuninitialized]

I looked and noticed this was a function for handling enum values so I commented out the enum variable from my serialization member function and then the sending worked as expected. It looks like the same cause (using addresses of temporaries) as in the S/O question. If anyone is interested I have written a small example exhibiting this issue.

I have a couple of questions regarding this:

 * Is it possible to get around this limitation/bug?^
 * Is boost::mpi still being actively developed? I've found a few discussions about this but none really lead anywhere.

Thanks,
Dan

^ Perhaps it would be possible to write a custom serialize function for any enums but this would be a pain if one used many different enums.



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