Browse Source

Unlock global serializer lock during shutdown.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2949 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 15 years ago
parent
commit
1e76356159
1 changed files with 9 additions and 0 deletions
  1. 9 0
      exec/main.c

+ 9 - 0
exec/main.c

@@ -139,6 +139,8 @@ static pthread_t corosync_exit_thread;
 
 static sem_t corosync_exit_sem;
 
+static void serialize_unlock (void);
+
 hdb_handle_t corosync_poll_handle_get (void)
 {
 	return (corosync_poll_handle);
@@ -157,6 +159,13 @@ void corosync_state_dump (void)
 
 static void unlink_all_completed (void)
 {
+	/*
+	 * The schedwrk_do API takes the global serializer lock
+	 * but doesn't release it because this exit callback is called
+	 * before it finishes.  Since we know we are exiting, we unlock it
+	 * here
+	 */
+	serialize_unlock ();
 	poll_stop (corosync_poll_handle);
 	totempg_finalize ();