Subject: [Boost-bugs] [Boost C++ Libraries] #13050: Serialization Fails on Optional Vector
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-06-01 08:04:53
#13050: Serialization Fails on Optional Vector
------------------------------+---------------------------
Reporter: cristall@⦠| Owner: ramey
Type: Bugs | Status: new
Milestone: To Be Determined | Component: serialization
Version: Boost 1.64.0 | Severity: Regression
Keywords: |
------------------------------+---------------------------
When serializing a boost::optional with T = std::vector, it will fail to
load. This is a regression in Boost 1.64 as 1.63 does not appear to
exhibit the issue.
The following code will exhibit the issue:
{{{
boost::optional<std::vector<std::uint8_t>> opt{};
std::string in_str{ "22 serialization::archive 15 0 0 1 0 4 0 0 1 2 3" };
std::istringstream iss{in_str};
boost::archive::text_iarchive ia{iss};
ia >> opt;
}}}
This should set opt to a valid optional containing a vector of {0, 1, 2,
3}. However it will instead either segfault or enter an infinite loop.
The cause appears to be related to a change in
boost/serialization/optional.hpp, where stack storage was changed from
using detail::stack_construct to detail::stack_allocate. The error
appears to come from trying to use an undefined vector object.
This was only tested on OSX using the following:
{{{
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.6.0
Thread model: posix
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/13050> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-06-01 08:10:35 UTC