GC buckets in 2.067

Iain Buclaw via Digitalmars-d digitalmars-d at puremagic.com
Sat Dec 5 03:05:14 PST 2015


On 5 December 2015 at 03:46, Steven Schveighoffer via Digitalmars-d <
digitalmars-d at puremagic.com> wrote:

> On 12/4/15 7:33 PM, Iain Buclaw via Digitalmars-d wrote:
>
>> On 5 December 2015 at 00:40, Iain Buclaw <ibuclaw at gdcproject.org
>> <mailto:ibuclaw at gdcproject.org>> wrote:
>>
>>     On 4 December 2015 at 21:52, Iain Buclaw <ibuclaw at gdcproject.org
>>     <mailto:ibuclaw at gdcproject.org>> wrote:
>>
>>         On 1 December 2015 at 09:46, Iain Buclaw <ibuclaw at gdcproject.org
>>         <mailto:ibuclaw at gdcproject.org>> wrote:
>>
>>             When running the unittest program for druntime.
>>
>>             ---
>>             Program received signal SIGSEGV, Segmentation fault.
>>             __memset_avx2 () at
>>             ../sysdeps/x86_64/multiarch/memset-avx2.S:101
>>
>>             backtrace:
>>             #0  __memset_avx2 () at
>>             ../sysdeps/x86_64/multiarch/memset-avx2.S:101
>>             #1  0x00000000004d45a0 in gc.gc.GC.malloc(ulong, uint,
>>             ulong*, const(TypeInfo)) (this=..., size=8, bits=0,
>>             alloc_size=0x7fffffffd428, ti=0x714050
>>             <TypeInfo_PS2rt3aaA4Impl.init$>) at
>>             ../../../../dev/libphobos/libd
>>             runtime/gc/gc.d:459
>>             #2  0x00000000004c5948 in gc_qalloc (sz=8, ba=0, ti=0x714050
>>             <TypeInfo_PS2rt3aaA4Impl.init$>) at
>>             ../../../.../dev/libphobos/libdruntime/gc/proxy.d:196
>>             #3  0x00000000004450de in core.memory.GC.qalloc(ulong, uint,
>>             const(TypeInfo)) (sz=8, ba=0, ti=0x714050
>>             <TypeInfo_PS2rt3aaA4Impl.init$>) at
>>             ../../../../dev/libphobos/libdruntime/core/memory.d:368
>>             #4  0x0000000000420e31 in _d_newitemT (_ti=0x714050
>>             <TypeInfo_PS2rt3aaA4Impl.init$>) at
>>             ../../../../dev/libphobos/libdruntime/rt/lifetime.d:1096
>>             #5  0x0000000000411f6c in _aaGetX (aa=0x7ffff7ed2090,
>>             keyti=0x7191a0 <ClassInfo for core.thread.Thread>,
>>             valuesize=8, pkey=0x7fffffffd598) at
>>             ../../../../dev/libphobos/libdruntime/rt/aaA.d:172
>>
>>
>>         DMD dropped calling this function in favour for _aaGetY().
>>
>>         Maybe I'm chasing a dead end, but maybe, *maybe* something
>>         changed and _aaGetX was not updated parallel?
>>
>>         Iain.
>>
>>
>>     Well, reverting all of druntime 2.067 (minus the bits that produce
>>     new errors) and I don't hit this error.
>>
>>     At least I have a (rather large) starting point to bisect down. :-)
>>
>>
>> Squashed down to a 1600 line diff of rt.lifetime, everything else has
>> been applied and passes the unittests just fine.
>>
>
> I'm interested in hearing what this is. lifetime.d went through a major
> update with struct destructor support in the GC. We've found a couple of
> bugs in there. You should examine the history between 2.067 and now.
>
> -Steve
>

Applying changes in a patch by patch manner using git-format, it didn't
take long to find the bad patch.

https://github.com/D-Programming-Language/druntime/pull/941

There's apparently a dependency on a compiler change, though I haven't
looked at that yet.

Iain
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20151205/7518da07/attachment-0001.html>


More information about the Digitalmars-d mailing list