mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-12 13:49:22 +01:00
when the child fails we need to reap it to avoid a zombie. This would
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com> * glib/gspawn.c (fork_exec_with_pipes) : when the child fails we need to reap it to avoid a zombie. This would happen in case of g_spawn_sync. Fixes #92658
This commit is contained in:
parent
424d06b0a1
commit
0ce0882772
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-23 Arvind Samptur <arvind.samptur@wipro.com>
|
||||||
|
* glib/gspawn.c (fork_exec_with_pipes) : when the child fails
|
||||||
|
we need to reap it to avoid a zombie. This would
|
||||||
|
happen in case of g_spawn_sync. Fixes #92658
|
||||||
|
|
||||||
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
2002-09-20 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
* glib/gscanner.c (g_scanner_msg_handler): Don't print
|
||||||
|
@ -961,7 +961,7 @@ fork_exec_with_pipes (gboolean intermediate_child,
|
|||||||
gint *standard_error,
|
gint *standard_error,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
gint pid;
|
gint pid = -1;
|
||||||
gint stdin_pipe[2] = { -1, -1 };
|
gint stdin_pipe[2] = { -1, -1 };
|
||||||
gint stdout_pipe[2] = { -1, -1 };
|
gint stdout_pipe[2] = { -1, -1 };
|
||||||
gint stderr_pipe[2] = { -1, -1 };
|
gint stderr_pipe[2] = { -1, -1 };
|
||||||
@ -1219,6 +1219,26 @@ fork_exec_with_pipes (gboolean intermediate_child,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup_and_fail:
|
cleanup_and_fail:
|
||||||
|
|
||||||
|
/* There was an error from the Child, reap the child to avoid it being
|
||||||
|
a zombie.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (pid > 0)
|
||||||
|
{
|
||||||
|
wait_failed:
|
||||||
|
if (waitpid (pid, NULL, 0) < 0)
|
||||||
|
{
|
||||||
|
if (errno == EINTR)
|
||||||
|
goto wait_failed;
|
||||||
|
else if (errno == ECHILD)
|
||||||
|
; /* do nothing, child already reaped */
|
||||||
|
else
|
||||||
|
g_warning ("waitpid() should not fail in "
|
||||||
|
"'fork_exec_with_pipes'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
close_and_invalidate (&child_err_report_pipe[0]);
|
close_and_invalidate (&child_err_report_pipe[0]);
|
||||||
close_and_invalidate (&child_err_report_pipe[1]);
|
close_and_invalidate (&child_err_report_pipe[1]);
|
||||||
close_and_invalidate (&child_pid_report_pipe[0]);
|
close_and_invalidate (&child_pid_report_pipe[0]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user