digitalmars.D - GC buckets in 2.067
- Iain Buclaw via Digitalmars-d (78/78) Dec 01 2015 When running the unittest program for druntime.
- David Nadlinger (5/6) Dec 01 2015 It has been almost a year now, but I don't remember anything like
- Iain Buclaw via Digitalmars-d (19/26) Dec 01 2015 t
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:
const(TypeInfo)) (this=3D..., size=3D8, bits=3D0, alloc_size=3D0x7fffffffd4=
28,
ti=3D0x714050 <TypeInfo_PS2rt3aaA4Impl.init$>) at
../../../../dev/libphobos/libd
runtime/gc/gc.d:459
<TypeInfo_PS2rt3aaA4Impl.init$>) at
../../../../dev/libphobos/libdruntime/gc/proxy.d:196
const(TypeInfo)) (sz=3D8, ba=3D0, ti=3D0x714050 <TypeInfo_PS2rt3aaA4Impl.in=
it$>)
at ../../../../dev/libphobos/libdruntime/core/memory.d:368
<TypeInfo_PS2rt3aaA4Impl.init$>) at
../../../../dev/libphobos/libdruntime/rt/lifetime.d:1096
<ClassInfo for core.thread.Thread>, valuesize=3D8, pkey=3D0x7fffffffd598) a=
t
../../../../dev/libphobos/libdruntime/rt/aaA.d:172
(this=3D0x7ffff7ed2080, dg=3D...) at
../../../../dev/libphobos/libdruntime/core/thread.d:3318
../../../../dev/libphobos/libdruntime/core/sync/mutex.d:262
e0
<ModuleInfo for core.sync.mutex>) at
../../../../dev/libphobos/libdruntime/core/runtime.d:448
0,
m=3D0x71a9e0 <ModuleInfo for core.sync.mutex>) at
../../../../dev/libphobos/libdruntime/object.d:1771
int(immutable(object.ModuleInfo*)) delegate) (dg=3D...) at
../../../../dev/libphobos/libdruntime/rt/minfo.d:287
int(object.ModuleInfo*) delegate) (dg=3D...) at
../../../../dev/libphobos/libdruntime/object.d:1770
../../../../dev/libphobos/libdruntime/core/runtime.d:438
../../../../dev/libphobos/libdruntime/rt/dmain2.d:428
int(char[][]) function*).tryExec(scope void() delegate)
(this=3D0x7fffffffdbe0, dg=3D...) at
../../../../dev/libphobos/libdruntime/rt/dmain2.d:40
4
mainFunc=3D0x402a60 <D main>) at
../../../../dev/libphobos/libdruntime/rt/dmain2.d:437
=3D1,
argv=3D0x7fffffffdd68, init=3D<optimised out>, fini=3D<optimised out>,
rtld_fini=3D<optimised out>, stack_end=3D0x7fffffffdd58) at libc-start.c:28=
9
In gc.d
---
459=E2=94=9C> memset(p + size, 0, *alloc_size - size);
p =3D (void *) 0x4c9fad <__gdc_exception_cleanup>
---
So the GC is trying to run memset on the address of a function.
It's caused by this line:
1796=E2=94=82 // Return next item from free list
1797=E2=94=9C> bucket[bin] =3D (cast(List*)p).next;
Where:
*(cast(List*)p) =3D {next =3D 0x4c9fad <__gdc_exception_cleanup>, pool =3D =
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?
Dec 01 2015
On Tuesday, 1 December 2015 at 08:47:03 UTC, Iain Buclaw wrote:David, did you get anything like this when moving to 2.067?It has been almost a year now, but I don't remember anything like that – are you sure that your GC root ranges (.data/stacks/TLS) are set correctly? — David
Dec 01 2015
On 1 December 2015 at 16:55, David Nadlinger via Digitalmars-d < digitalmars-d puremagic.com> wrote:On Tuesday, 1 December 2015 at 08:47:03 UTC, Iain Buclaw wrote:tDavid, did you get anything like this when moving to 2.067?It has been almost a year now, but I don't remember anything like that =E2=80=93 are you sure that your GC root ranges (.data/stacks/TLS) are se=correctly? =E2=80=94 DavidEvery update I make sure to keep the old _tlsstart/_tlsend implementation intact. So it should be adding ranges as per 2.066. I reverted the GC changes to 2.066 and recompiled. Now I have a null pool pointer at: 2457=E2=94=82 for (List *list =3D bucket[n]; list; list =3D lis= t.next) 2458=E2=94=82 { 2459=E2=94=82 pool =3D list.pool; 2460=E2=94=9C> assert(pool); 2461=E2=94=82 pool.freebits.set(cast(size_t)(cast(byte*)lis= t - pool.baseAddr) / 16); 2462=E2=94=82 } Maybe there's a codegen change that I haven't picked up. This is likely as if feels like 70% of the changes in dmd are unwanted noise. Iain
Dec 01 2015








Iain Buclaw via Digitalmars-d <digitalmars-d puremagic.com>