On 1 December 2015 at 09:46, Iain Buclaw <ibuclaw@gdcproject.org> wrote:

Where:

*(cast(List*)p) = {next = 0x4c9fad <__gdc_exception_cleanup>, pool = 0x0}

Not sure what is going on, but it seems to happen after allocating memory a couple dozen or so times.

David, did you get anything like this when moving to 2.067?


I removed the line in EH where `__gdc_exception_cleanup` is assigned (xh is GC'd memory)

221│   //xh.unwindHeader.exception_cleanup = & __gdc_exception_cleanup;


The unittester carries on a little longer until it seg faults here.

1796│         // Return next item from free list
1797│         bucket[bin] = (cast(List*)p).next;
1798│         auto pool = (cast(List*)p).pool;
1799│         if (bits)
1800├>            pool.setBits((p - pool.baseAddr) >> pool.shiftBy, bits);

Where:

*cast(List*)p = {next = 0xa, pool = 0x0}


Martin - you've been making changes to the GC no?  Any idea why the bucket list could be storing garbage pointers?  Any hints to narrow this down?  (I could turn on memory stomping).