[Nix-dev] nix killed by 11
Nicolas Pierron
nicolas.b.pierron at gmail.com
Fri Sep 18 18:13:30 CEST 2009
On Fri, Sep 18, 2009 at 18:08, Eelco Dolstra <e.dolstra at tudelft.nl> wrote:
> Nicolas Pierron wrote:
>
>>> Nicolas Pierron wrote:
>>>
>>>> So we should try to get rid of the stack introspection because:
>>>> - It can makes errors and can alter non-Terms pointers. (already
>>>> experience that in a Stratego extension)
>>> It never alters them, it's not a copying garbage collector.
>>>
>>
>> The ATerm library does not modify the content of the term but it
>> modifies the "age counter" which is a 2 bits counter.
>
> From what I gather from the sources, the age counter is in the term itself, not
> in pointers to the term (then it would have to be masked out on every
> dereference). From aterm.c:
>
> INCREMENT_AGE(t->header);
>
> And AT_isInsideValidTerm() should ensure that the GC only does this for actual
> terms.
I have no idea, but the bug I had when manipulating Stratego was a
data corruption coming from the ATerm library related to the age
manipulation. Only the term were protected, may be this was related
to the usage of Blobs.
--
Nicolas Pierron
http://www.linkedin.com/in/nicolasbpierron
Andrew S. Tanenbaum - Never underestimate the bandwith of a wagon full of tapes.
More information about the nix-dev
mailing list