So in digging by this problem, I have made simple patch to
druntime. I have added in druntime/src/core/thread.d to
final Thread start() nothrow
of class Thread
import core.stdc.stdio;
printf("start Thread\n");
And to
~this() nothrow @nogc
import core.stdc.stdio;
printf("detach Thread\n");
I recompiled phobos to apply changes to druntime and I see that
"start Thread" there is, but "detach Thread" printed only at the
end of process even if I do GC.collect().
So dtor of class Thread doesn't call on GC. Why?