Re: [Boost-bugs] [Boost C++ Libraries] #4660: Error read binary archive, created by old boost version

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