-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Shell
-
Fully Compatible
-
ALL
-
Platforms 2016-11-21
-
0
The shell process management functions fork()/exec() in a multi-threaded program without sufficient guards to avoid leaking fds into children. This causes deadlocks around the program registry (as we rely on file descriptor closure to break us out of dedicated child threads which read child output).
The fix is to use a global lock to guard us from before the call to pipe() until after we close write side of the pipe in the parent.