• B
    start_command: close cmd->err descriptor when fork/spawn fails · fc012c28
    bert Dvornik 提交于
    Fix the problem where the cmd->err passed into start_command wasn't
    being properly closed when certain types of errors occurr.  (Compare
    the affected code with the clean shutdown code later in the function.)
    
    On Windows, this problem would be triggered if mingw_spawnvpe()
    failed, which would happen if the command to be executed was malformed
    (e.g. a text file that didn't start with a #! line).  If cmd->err was
    a pipe, the failure to close it could result in a hang while the other
    side was waiting (forever) for either input or pipe close, e.g. while
    trying to shove the output into the side band.  On msysGit, this
    problem was causing a hang in t5516-fetch-push.
    
    [J6t: With a slight adjustment of the test case, the hang is also
    observed on Linux.]
    Signed-off-by: Nbert Dvornik <dvornik+git@gmail.com>
    Signed-off-by: NJohannes Sixt <j6t@kdbg.org>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    fc012c28
t5516-fetch-push.sh 17.3 KB