Subject: Re: [Boost-bugs] [Boost C++ Libraries] #4660: Error read binary archive, created by old boost version
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-02-26 19:20:31
#4660: Error read binary archive, created by old boost version
---------------------------------------+------------------------------------
Reporter: serge-voropaev@⦠| Owner: ramey
Type: Bugs | Status: reopened
Milestone: Boost 1.45.0 | Component: serialization
Version: Boost 1.45.0 | Severity: Problem
Resolution: | Keywords:
---------------------------------------+------------------------------------
Comment (by anonymous):
Replying to [comment:53 ramey]:
> a) in the course of this, did you come up with any tests which can add
to the test suite to test backward capability? I would like to consider
adding such tasks to the test suite.
First I created a simple test app that would write a binary archive. It
contained just one class for now. Then I compiled it with every boost
version from 1.34 - 1-46.1 to get some test data and to debug what exactly
gets written. When I had the patch ready I created another small test app
that tries to read the archives back. I think this could be turned into a
simple test that checks compatibility with a defined set of binary
archives from different versions. I don't have access to the code right
now but I can provide it. I'm not familiar with the boost regression tests
yet (well, I can run them). If you wan't me to I can try to add some tests
myself and add them in another patch.
> b) How would the documentation have to be changed?
As far as I can see the release notes are wrong about several things. The
version that started to break something was 1.44. There is also some text
about a fix-six utility that changes archive version to from 7 to 6. The
reference to this utility should be removed. It shouldn't be required
anymore.
My fix detects archives written by version 1.44 that have an archive
version of 7 and increases it to 8. I think it is possible that binary
archives are being used without a header. In this mode the user has to
provide the right archive number by calling set_library_version, right? So
the documentation should mention that when reading back archives from 1.44
the user should manually set archive version 8.
I also found a problem report that mentions another compatibility issue
with binary archives that is independent from the one my patch addresses.
https://svn.boost.org/trac/boost/ticket/5579
This only affects people that split serialization across multiple dlls. I
don't think this problem should be fixed in the way the user suggests
there though. The solution adds more complexity and cannot work 100%
without the user knowing which boost serialization version was really
used. But IMHO it should be mentioned in the release notes that there is
an issue with a link to the track item. This way users that have this
problem can go there and find the patch.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/4660#comment:54> 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-02-16 18:50:12 UTC