[M3devel] pickle bug..solved?.. not supposed to work?

Olaf Wagner wagner at elegosoft.com
Mon Dec 14 12:42:57 CET 2009


Quoting Tony Hosking <hosking at cs.purdue.edu>:

> Yes, v1 is there in case anyone has v1 pickles they want to decode.

I'd also vote for making V2 pickles the default. We could rename
Pickle to Pickle1 and Pickle2 to Pickle and document this as an
semantically incompatible change.

Or is there really much interest in reading old pickle versions?

Olaf

> On 13 Dec 2009, at 00:50, Jay K wrote:
>
>> I assume there is a need to keep the code around for compatibility?
>> You know -- to read existing files?
>> And to keep testing that?
>>   And write them at least so the tests can read them back?
>>
>>
>> But maybe we should take a read-only attitude?
>>
>>
>> And switch the quake netobj=netobj1 to netobj=netobj2?
>>
>>
>> It's tough..if you convert-upon-write, and people are
>> running old programs, you'll break their files.
>>
>>
>> It's also tough, you know, I think this stuff is too automatic.
>> I'm pretty sure we should change the Text internal representation,
>> but I'm also pretty sure the persistance (disk) representation
>> is automatically derived from the transient (memory)
>> representation and changing the second breaks the first.
>>
>>
>> You know, I suspect it is like those systems
>> that do:
>>
>>
>> struct foo a;
>> fwrite(&a, sizeof(a));
>>
>>
>> but just with endian/wordsize conversions and
>> hashes/typeid to do checks upon read, so it
>> won't crash if you change things, but it also won't
>> read back successfully.
>>
>>
>> Maybe the v1 limitations are good as well, in that maybe
>> it is faster, and sometimes the limitations don't matter???
>>
>>
>>  - Jay
>>
>>
>> Date: Sun, 13 Dec 2009 00:52:53 -0500
>> From: rcoleburn at scires.com
>> To: m3devel at elegosoft.com
>> Subject: Re: [M3devel] pickle bug..solved?.. not supposed to work?
>>
>> Jay:
>>
>> I've done a lot with Pickles and with NetObj.
>>
>> I switched to the v2 version a long time ago and never looked back.
>>
>> IMO, we should switch over to v2 exclusively and consider v1   
>> obsolete.  Perhaps some others should comment on this to see if   
>> they share my opinion.
>>
>> Regards,
>> Randy
>>
>> >>> Jay K <jay.krell at cornell.edu> 12/13/2009 12:34 AM >>>
>>
>> https://projects.elego.de/cm3/ticket/1068
>>
>>
>>
>>
>>
>> I've only spent a few minutes here.
>>
>> Trying to find the relative code and such.
>>
>>
>>
>>
>>
>> The code is here:
>>
>>
>>
>>
>>
>> C:\dev2\cm3.2\m3-comm\netobj\tests\perf\src
>>
>>
>>
>> I found it by looking near the top of the stack in
>>
>> the bug report -- NetObjTest.m3 -- and
>>
>> then dir /s/b NetObjTest.m3.
>>
>>
>>
>> or find . | grep NetObjTest.m3$ on Unix.
>>
>>
>>
>>
>>
>> It appears that Pickle v1 and v2 are both
>>
>> available in the same library.
>>
>> There is INTERFACE Pickle and INTERFACE Pickle2.
>>
>>
>>
>>
>>
>> It appears netobj can use either.
>>
>>
>>
>> If you look at the stack in the bug, there is a lot of "v1" stuff.
>>
>>
>>
>>
>>
>> We provide Quake functions:
>>
>>
>>
>> readonly proc netobjv1(intf, type) is
>> ...
>>
>> end
>>
>>
>>
>> readonly proc Netobjv1(intf, type) is
>> ...
>>
>> end
>>
>>
>>
>> readonly proc netobjv2(intf, type) is
>> ...
>>
>> end
>>
>>
>>
>> readonly proc netobj(intf, type) is
>>   netobjv1(intf, type)
>> end
>>
>>
>>
>>
>>
>>
>> v1 pickles cannot cross endian/wordsize boundaries.
>>
>>
>>
>>
>>
>> I think the bug is not so much in the pickle code, nor in the netobj code,
>>
>> but in the test code, or the running of it.
>>
>>
>>
>> Tests involving v1 won't work crossing endian/wordsize boundaries.
>>
>> V1 tests probably should still run, and maybe detect the mismatch
>>
>> and just claim success?
>>
>>
>>
>> And then v2 should get better coverage?
>>
>>
>>
>>
>>
>> Any more bugs then?
>>
>> I was procrastinating on this because I've never done anything with pickles
>
>



-- 
Olaf Wagner -- elego Software Solutions GmbH
                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
    http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




More information about the M3devel mailing list