diff -rupN gnome-settings-daemon-2.24.0-orig/gnome-settings-daemon/main.c gnome-settings-daemon-2.24.0/gnome-settings-daemon/main.c
--- gnome-settings-daemon-2.24.0-orig/gnome-settings-daemon/main.c	2009-02-20 15:39:07.000000000 +0800
+++ gnome-settings-daemon-2.24.0/gnome-settings-daemon/main.c	2009-02-20 15:38:21.000000000 +0800
@@ -227,11 +227,16 @@ gsd_log_default_handler (const gchar   *
                                unused_data);
 }
 
+static void
+sig_child(int sig_no) {
+        exit (EXIT_SUCCESS);
+}
+
 static gboolean
 daemonize (void)
 {
 	int child_pid;
-
+        signal(SIGCHLD, sig_child);
 	child_pid = fork ();
 
 	switch (child_pid) {
