[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: wip-threads-and-fork
From: |
Andy Wingo |
Subject: |
Re: wip-threads-and-fork |
Date: |
Fri, 24 Feb 2012 11:21:41 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) |
On Fri 24 Feb 2012 04:00, Nala Ginrut <address@hidden> writes:
> I think I could use pipes to handle some sub-process rather than do it
> with fork manually. But I must create a daemon, it can't avoid to use
> fork, will this circumstance cause problems if I use threads after it?
I just pushed a patch like this:
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -1248,6 +1248,18 @@ SCM_DEFINE (scm_fork, "primitive-fork", 0, 0, 0,
#define FUNC_NAME s_scm_fork
{
int pid;
+ if (scm_ilength (scm_all_threads ()) != 1)
+ /* Other threads may be holding on to resources that Guile needs --
+ it is not safe to permit one thread to fork while others are
+ running.
+
+ In addition, POSIX clearly specifies that if a multi-threaded
+ program forks, the child must only call functions that are
+ async-signal-safe. We can't guarantee that in general. The best
+ we can do is to allow forking only very early, before any call to
+ sigaction spawns the signal-handling thread. */
+ SCM_MISC_ERROR ("attempt to fork while multiple threads are running",
+ SCM_EOL);
pid = fork ();
if (pid == -1)
SCM_SYSERROR;
What do you think?
Andy
--
http://wingolog.org/
- wip-threads-and-fork, Andy Wingo, 2012/02/08
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/22
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/23
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/23
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/23
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/23
- Re: wip-threads-and-fork,
Andy Wingo <=
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/24
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/24
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/24
- Re: wip-threads-and-fork, Ludovic Courtès, 2012/02/26
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/27
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/24
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/24
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/24
- Re: wip-threads-and-fork, Andy Wingo, 2012/02/25
- Re: wip-threads-and-fork, Nala Ginrut, 2012/02/25