The global serializer mutex is left in a locked state during the
shutdown process. At about the same time, the timer system expires a
timer (which takes the global serializer lock) leading to either high
CPU use on multiprocessor during shutdown or deadlock on uniprocessor.
Regards
-steve
Index: exec/main.c
===================================================================
--- exec/main.c (revision 2948)
+++ exec/main.c (working copy)
@@ -139,6 +139,8 @@
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 @@
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 ();
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais