Retro68/gcc/libphobos/testsuite/libphobos.thread/tlsgc_sections.d
Wolfgang Thaller 6fbf4226da gcc-9.1
2019-06-20 20:10:10 +02:00

40 lines
608 B
D

final class Class
{
// This gets triggered although the instance always stays referenced.
~this()
{
import core.stdc.stdlib;
abort();
}
}
Class obj;
static this()
{
obj = new Class;
}
static ~this()
{
// Free without destruction to avoid triggering abort()
import core.memory;
GC.free(cast(void*)obj);
}
void doit()
{
foreach (i; 0 .. 10_000)
new ubyte[](100_000);
}
void main()
{
import core.thread;
auto t = new Thread(&doit);
t.start();
// This triggers the GC that frees the still referenced Class instance.
doit();
}