[M3devel] A GC/compiler/Pickle interaction bug

Dragiša Durić dragisha at m3w.org
Sun Apr 22 09:29:11 CEST 2007


It looks like this fix never came through... With cvs-head CM3,
unpickling of TextRefTbl.T instance still does not work.

dd

On Tue, 2007-01-09 at 13:06 -0500, Tony Hosking wrote:
> Rodney,
> 
> I've checked in fixes to RTTypeMap and clients that should restore  
> functional pickling support.  For some reason my commit messages are  
> awaiting moderator approval (it seems my commit id is not the same as  
> my subscription to the m3commit list) before they can be sent out.   
> Please make sure that unpickling now works for you.
> 
> Best regards,
> 
> Tony
> 
> On Dec 30, 2006, at 7:41 PM, Rodney M. Bates wrote:
> 
> > I tracked down a bug unpickling to the following.  When executing
> > in ConvertPacking.Read, at ConvertPacking.m3:327, this code:
> >
> >                 WITH ref = LOOPHOLE(dest, UNTRACED REF REFANY) DO
> >                   ref^ := v.readRef(nelem.refType);
> >                 END;
> >
> > has a compiler-generated call on RTCollector.CheckStoreTraced(ref).
> > CheckStoreTraced expects ref to be a normal reference to an object,
> > computes the address of its header (4 bytes less), and sets the  
> > dirty bit.
> >
> > But ConvertPacking is reading in to a field of a recently created
> > object that is not first in the object.  It computes ref to point
> > to the field, and CheckStoreTraced actually steps on the previous
> > real field instead of the header.
> >
> > It looks like the actions of CheckStoreTraced are needed, but I
> > don't right off hand see how to recode Convert to fix this.  It's
> > use of ref can't be moved.  Presumably, there could be other unsafe
> > code elsewhere using the same technique to store data.
> >
> > Does the compiler need a different criterion on when to generate
> > the call on CheckStoreTraced?  ref is an UNTRACED REF here, but it
> > still is pointing inside a traced object.   Maybe people who modify
> > objects in this way need to explicitly call CheckStoreTraced?
> >
> > -- 
> > -------------------------------------------------------------
> > Rodney M. Bates, retired assistant professor
> > Dept. of Computer Science, Wichita State University
> > Wichita, KS 67260-0083
> > 316-978-3922
> > rodney.bates at wichita.edu
> > _______________________________________________
> > M3devel mailing list
> > M3devel at elegosoft.com
> > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel
> 
> Antony Hosking                | Associate Professor
> Dept of Computer Science      | Office: +1 765 494-6001
> Purdue University             | Mobile: +1 765 427-5484
> 250 N. University Street      | Email:  hosking at cs.purdue.edu
> West Lafayette, IN 47907-2066 | http://www.cs.purdue.edu/~hosking
>   _--_|\
> /      \
> \_.--._/    )
>        v    /
> 
> 
> 
> _______________________________________________
> M3devel mailing list
> M3devel at elegosoft.com
> https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel
-- 
Dragiša Durić <dragisha at m3w.org>




More information about the M3devel mailing list