evolution-data-server r8399 - trunk/camel



Author: mbarnes
Date: Mon Jan 21 12:53:15 2008
New Revision: 8399
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=8399&view=rev

Log:
2008-01-21  Matthew Barnes  <mbarnes redhat com>

	* camel.c (camel_shutdown):
	Save certificates _before_ calling PR_Cleanup().  Calling fsync()
	from camel_certdb_save() after we've called PR_Cleanup() appears to
	trigger a race between PR_Cleanup() -- which frees a lock protecting
	thread bookmarking data -- and _pt_thread_death_internal() -- which
	needs to temporarily lock the thread bookmarking data.  (#445309)



Modified:
   trunk/camel/ChangeLog
   trunk/camel/camel.c

Modified: trunk/camel/camel.c
==============================================================================
--- trunk/camel/camel.c	(original)
+++ trunk/camel/camel.c	Mon Jan 21 12:53:15 2008
@@ -54,21 +54,19 @@
 	if (!initialised)
 		return;
 
-#if defined (HAVE_NSS) && !defined (G_OS_WIN32)
-	/* For some reason we get into trouble on Win32 if we call these.
-	 * But they shouldn't be necessary as the process is exiting anywy?
-	 */
-	NSS_Shutdown ();
-
-	PR_Cleanup ();
-#endif /* HAVE_NSS */
-
 	certdb = camel_certdb_get_default ();
 	if (certdb) {
 		camel_certdb_save (certdb);
 		camel_object_unref (certdb);
 	}
 
+	/* These next calls must come last. */
+
+#if defined (HAVE_NSS)
+	NSS_Shutdown ();
+	PR_Cleanup ();
+#endif /* HAVE_NSS */
+
 	initialised = FALSE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]