import core.stdc.stdio;
import std.parallelism;
static ~this()
{
printf("%.*s\n", __FUNCTION__.length, __FUNCTION__.ptr);
}
shared static ~this()
{
printf("%.*s\n", __FUNCTION__.length, __FUNCTION__.ptr);
}
void main()
{
auto t = new TaskPool();
t.isDaemon = true;
}
------------------
The previous code prints:
main._staticDtor1
main._sharedStaticDtor2
main._staticDtor1
main._staticDtor1
main._staticDtor1
------------------
Per http://dlang.org/spec/module.html#staticorder, shared static destructors are defined to run after all other static destructors but in this case that is not happening.
Original bug report: https://github.com/rejectedsoftware/vibe.d/issues/1374
Comment #1 by robert.schadek — 2024-12-07T13:36:20Z