GC buckets in 2.067

Iain Buclaw via Digitalmars-d digitalmars-d at puremagic.com
Tue Dec 1 07:39:11 PST 2015


On 1 December 2015 at 09:46, Iain Buclaw <ibuclaw at 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).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20151201/6e0e7ee2/attachment.html>


More information about the Digitalmars-d mailing list