Acquire all_tasks_mutex in forkProcess
forkProcess we acquire a bunch of mutexes so make sure that when we fork the child doesn't see an inconsistent state of any global data structures. However, we do not acquire the
all_tasks_mutex, which means that the child might have an inconsistent view of the
Sadly, I do not have a test case illustrating that this is in fact a problem. Found this while working tracking down a deadlock in forkProcess (https://ghc.haskell.org/trac/ghc/ticket/9295).