Re: [Boost-bugs] [Boost C++ Libraries] #4903: Serialization library in Boost 1.45 is unable to read archive created with Boost 1.39

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #4903: Serialization library in Boost 1.45 is unable to read archive created with Boost 1.39
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2010-12-18 23:20:23


#4903: Serialization library in Boost 1.45 is unable to read archive created with
Boost 1.39
-------------------------------------------------------+--------------------
  Reporter: Rüdiger Brünner <rbruenner@…> | Owner: ramey
      Type: Bugs | Status: new
 Milestone: To Be Determined | Component: serialization
   Version: Boost 1.45.0 | Severity: Showstopper
Resolution: | Keywords:
-------------------------------------------------------+--------------------

Comment (by ramey):

 I've been struggling with this. Here is the output from test_simple in
 xml format

 {{{
 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 <!DOCTYPE boost_serialization>
 <boost_serialization signature="serialization::archive" version="8">
 <a class_id="0" tracking_level="0" version="0">
         <b>1</b>
         <f>757147</f>
         <g>167851000</g>
         <l>2</l>
         <m>15724</m>
         <n>11478</n>
         <o>29358</o>
         <p>26962</p>
         <q>24464</q>
         <r>5705</r>
         <c>-15</c>
         <s>-15</s>
         <t>187</t>
         <u>9961</u>
         <v>491</v>
         <w>2995</w>
         <x>11942</x>
 <y>uirxnrvpfehwtrbifmqaylbxblotupkjewsfcgbupvdkwfravemvnrnfpnuxlk</y>
         <z>n</z>
 </a>
 </boost_serialization>
 }}}

 I've looked carefully at Serialisation #4903.pdf and see you're comments -
 this is very helpful. BUT there are several possible alternative
 explanations:

 Either class_id, tracking_level or version expanded from on byte to 4
 bytes. My suspicion is that the culprit is tracking_level. The whole
 problem came about when I tweaked some types to eliminate some warnings.
 This changed the size of these types which then changed the archive
 format. This looks easy now, but the whole issue was obscured by a number
 of things like implicit conversions. Turns out that I never touched
 tracking_type. And there is confusing point on this as well. The type
 trait is an enum of 3 values - the usage in the file is bool - indicated
 whether that particular type has been tracked in that file. So I believe
 that something is mixed up here - unfortunately it's very, very hard to
 pin down since i can't build archives in older formats without re-
 installing and building old library versions.

 So at this moment I'm stuck - I don't know if this makes anyone feel
 better, but there it is.

 Robert Ramey

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/4903#comment:10>
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:05 UTC