From f0f807c51f7347eefa8ec42a0fef7eb4a7e190ea Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Sun, 14 Mar 2004 18:26:47 +0000 Subject: [PATCH] Use fork1() not fork for G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Sun Mar 14 13:23:36 2004 Owen Taylor * glib/gspawn.c: Use fork1() not fork for G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) --- ChangeLog | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-12 | 5 +++++ ChangeLog.pre-2-4 | 5 +++++ ChangeLog.pre-2-6 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ glib/gspawn.c | 15 +++++++++++++-- 7 files changed, 43 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c13000dad..086aa83be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c13000dad..086aa83be 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index c13000dad..086aa83be 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index c13000dad..086aa83be 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index c13000dad..086aa83be 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index c13000dad..086aa83be 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/glib/gspawn.c b/glib/gspawn.c index d6adcd1f0..2fd31b8ba 100644 --- a/glib/gspawn.c +++ b/glib/gspawn.c @@ -39,6 +39,17 @@ #include "glibintl.h" +/* With solaris threads, fork() duplicates all threads, which + * a) could cause unexpected side-effects, and b) is expensive. + * Once we remove support for solaris threads, the FORK1 #define + * should be removedl + */ +#ifdef G_THREADS_IMPL_SOLARIS +#define FORK1() fork1() +#else +#define FORK1() fork() +#endif + static gint g_execute (const gchar *file, gchar **argv, gchar **envp, @@ -1056,7 +1067,7 @@ fork_exec_with_pipes (gboolean intermediate_child, if (standard_error && !make_pipe (stderr_pipe, error)) goto cleanup_and_fail; - pid = fork (); + pid = FORK1 (); if (pid < 0) { @@ -1098,7 +1109,7 @@ fork_exec_with_pipes (gboolean intermediate_child, */ GPid grandchild_pid; - grandchild_pid = fork (); + grandchild_pid = FORK1 (); if (grandchild_pid < 0) {