Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-26910

provide a global lock around process creation in shell_utils_launcher

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.4.0-rc3
    • Affects Version/s: None
    • Component/s: Shell
    • Labels:
    • 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.

            mira.carey@mongodb.com Mira Carey
            mira.carey@mongodb.com Mira Carey
            0 Vote for this issue
            2 Start watching this issue