Hi,

The patch I've pushed should hopefully fix this and also strengthen the sanity checking somewhat :-)

Tom


Tom Shackell wrote:
Hi Michal,

Yes I found exactly the same bug yesterday evening when I was rewriting the sanity checker (it now scans the heap linearly). The problem is simple, cinfo_alloc contained:

  if (obj){
    zcon = (Node*)heap_alloc(wordsof(Node));
    MAKE_NODE(zcon, cinfo, N_NORMAL);
    obj->node = zcon;
    obj->info = (Info*)cinfo;
  }

which allocates a zero arity constructor node for the constructor (I just copy pased the code from finfo_alloc to allocate a CAF node). However, I forgot that not all constructors are zero arity and so not all need a zero arity node. So the code should read:

 if (obj){
    if (cinfo->size == 0){
      zcon = (Node*)heap_alloc(wordsof(Node));
      MAKE_NODE(zcon, cinfo, N_NORMAL);
      obj->node = zcon;
    }
    obj->info = (Info*)cinfo;
  }

I'll submit a patch shortly :-)

Thanks very much for your efforts, it really has made my life easier :-)


Tom
_______________________________________________
Yhc mailing list
[email protected]
http://haskell.org/mailman/listinfo/yhc

Reply via email to