1 http://bugzilla.redhat.com/858348
2 http://bugzilla.redhat.com/755992
4 diff -up GConf-3.2.5/gconf/gconfd.c.workaround-crash GConf-3.2.5/gconf/gconfd.c
5 --- GConf-3.2.5/gconf/gconfd.c.workaround-crash 2012-03-07 13:08:55.000000000 -0500
6 +++ GConf-3.2.5/gconf/gconfd.c 2012-09-24 10:04:22.604652720 -0400
7 @@ -1053,63 +1053,6 @@ static GSList* main_loops = NULL;
8 static guint timeout_id = 0;
9 static gboolean need_log_cleanup = FALSE;
12 -periodic_cleanup_timeout(gpointer data)
16 - gconf_log (GCL_INFO, _("SIGHUP received, reloading all databases"));
18 - need_db_reload = FALSE;
21 - shutdown_databases ();
23 - gconf_server_load_sources ();
27 - reload_databases ();
31 - gconf_log (GCL_DEBUG, "Performing periodic cleanup, expiring cache cruft");
34 - drop_old_clients ();
36 - drop_old_databases ();
39 - if (no_databases_in_use () && gconfd_dbus_client_count () == 0)
41 - if (no_databases_in_use () && client_count () == 0)
44 - gconf_log (GCL_INFO, _("GConf server is not in use, shutting down."));
45 - gconfd_main_quit ();
49 - /* expire old locale cache entries */
50 - gconfd_locale_cache_expire ();
53 - if (!need_log_cleanup)
55 - gconf_log (GCL_DEBUG, "No log file saving needed in periodic cleanup handler");
59 - /* Compress the running state file */
63 - need_log_cleanup = FALSE;
69 gconfd_need_log_cleanup (void)
71 @@ -1123,26 +1066,14 @@ gconf_main(void)
73 loop = g_main_loop_new (NULL, TRUE);
75 - if (main_loops == NULL)
77 - gulong timeout_len = 60*0.5; /* 60 s/min * .5 min */
79 - g_assert(timeout_id == 0);
80 - timeout_id = g_timeout_add_seconds (timeout_len,
81 - periodic_cleanup_timeout,
86 main_loops = g_slist_prepend(main_loops, loop);
88 g_main_loop_run (loop);
90 main_loops = g_slist_remove(main_loops, loop);
92 - if (main_loops == NULL)
93 + if (main_loops == NULL && timeout_id != 0)
95 - g_assert(timeout_id != 0);
96 g_source_remove(timeout_id);