In January 2023 I reported a bug in execv_: toAStringz: memory corruption, provided a fix and had a discussion std.process: memory allocation with malloc in execv_.
That bug seems to be in the codebase for seven years, represents a regression, and has priority 1. But it is still unpatched.
If I read the discussion correctly Steven asked for disabling the GC before the arguments of the call to exec*
are set up. I strongly disliked that because disabling the GC is useless in most of the cases (invocations) because the collector does not run anyway. There are no "cycles saved" by disabling the collector.
Disabling the GC and re-enabling it in a scope guard unnecessarily complicates the code.
If there is a misconception on my side, e.g. "most new allocation do not invoke the collector", I would appreciate a pointer to some documentation.