From 5ff803d91f252bfeb4a9cfaf2f94ecdea6e6a687 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sat, 15 Oct 2011 13:27:46 -0400 Subject: [PATCH] Add to the pitfalls: fork() and daemon() --- glib/gthread.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/glib/gthread.c b/glib/gthread.c index 2bbbce532..e4ccdd819 100644 --- a/glib/gthread.c +++ b/glib/gthread.c @@ -126,6 +126,18 @@ * used as an alternative. Or you can use the uselocale() function * to change the locale only for the current thread. * + * + * fork() only takes the calling thread into the child's copy of the + * process image. If other threads were executing in critical + * sections they could have left mutexes locked which could easily + * cause deadlocks in the new child. For this reason, you should + * call exit() or exec() as soon as possible in the child and only + * make signal-safe library calls before that. + * + * + * daemon() uses fork() in a way contrary to what is described + * above. It should not be used with GLib programs. + * * * * GLib itself is internally completely thread-safe (all global data is