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.