Fix #16450 atomic renames
GHC Should make calls using process jobs
when calling out to GCC and LD.
The reason is these use the exec ()
family of posix functions.
Window's process model doesn't allow replacement of processes so this is emulated by
creating a new process and immediately exiting the old one.
Because of this when using normal Windows wait functions you would return even without the child process having finished. In this case if you are depending on data from the child you will enter a race condition.
The usual fix for this is to use process jobs
and wait for the termination of all
children that have ever been spawn by the process you called. But also waiting for the
freeing of all resources.
This fixes #16450 and I believe should fix #17691 (closed).