Acquire all_tasks_mutex in forkProcess
In 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 all_tasks list.
https://phabricator.haskell.org/D60
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).
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.8.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |