List:Commits« Previous MessageNext Message »
From:Marc Alff Date:March 31 2011 4:13pm
Subject:bzr commit into mysql-trunk-lock-order branch (marc.alff:3351)
View as plain text  
#At file:///Users/malff/BZR_TREE/mysql-trunk-lock-order/ based on revid:marc.alff@stripped

 3351 Marc Alff	2011-03-31
      lock order, continued

    modified:
      sql/debug_lock_order.cc
      sql/mysqld.cc
=== modified file 'sql/debug_lock_order.cc'
--- a/sql/debug_lock_order.cc	2011-03-31 13:55:55 +0000
+++ b/sql/debug_lock_order.cc	2011-03-31 16:13:26 +0000
@@ -5,10 +5,22 @@
 #include "mysqld.h"
 #include "debug_lock_order.h"
 
+static void debug_lock_order_break_here()
+{
+static int debugger_calls= 0;
+
+  /* Put a breakpoint here in your debugger. */
+  debugger_calls++;
+}
+
 #define LO_MAX_THREAD_CLASS 100
 #define LO_MAX_MUTEX_CLASS 200
 #define LO_MAX_RWLOCK_CLASS 50
 
+#define LO_THREAD_RANGE 0
+#define LO_MUTEX_RANGE 1000
+#define LO_RWLOCK_RANGE 2000
+
 #define LO_MAX_QNAME_LENGTH 128
 
 FILE *out_log= NULL;
@@ -126,9 +138,10 @@ typedef std::list<LO_authorised_arc*, LO
 class LO_node
 {
 public:
-  LO_node(const char *category, const char *name)
+  LO_node(const char *instrument, const char *category, const char *name)
   {
-    sprintf(m_qname, "%s/%s", category, name);
+    sprintf(m_qname, "%s/%s/%s", instrument, category, name);
+    sprintf(m_short_name, "%s/%s", category, name);
   }
 
   virtual ~LO_node()
@@ -137,7 +150,10 @@ public:
   const char *get_qname() const
   { return m_qname; }
 
-  virtual int get_key() const = 0;
+  const char *get_short_name() const
+  { return m_short_name; }
+
+  virtual int get_unified_key() const = 0;
 
   void add_out(LO_arc *arc)
   { m_arcs_out.push_front(arc); }
@@ -155,6 +171,7 @@ public:
 
 private:
   char m_qname[LO_MAX_QNAME_LENGTH];
+  char m_short_name[LO_MAX_QNAME_LENGTH];
   LO_arc_list m_arcs_in;
   LO_arc_list m_arcs_out;
 };
@@ -358,8 +375,8 @@ void LO_graph::dump_dot()
       {
         fprintf(out_dot,
                 "  node [label=\"%s\"] %d;\n",
-                n->get_qname(),
-                n->get_key());
+                n->get_short_name(),
+                n->get_unified_key());
       }
     }
 
@@ -377,8 +394,8 @@ void LO_graph::dump_dot()
       {
         fprintf(out_dot,
                 "  %d -> %d;\n",
-                a->get_from()->get_key(),
-                a->get_to()->get_key());
+                a->get_from()->get_unified_key(),
+                a->get_to()->get_unified_key());
       }
       else
       {
@@ -390,8 +407,8 @@ void LO_graph::dump_dot()
 
         fprintf(out_dot,
                 "  %d:c -> %d:s [dir=back color=red arrowsize=2 penwidth=5];\n",
-                a->get_to()->get_key(),
-                a->get_from()->get_key());
+                a->get_to()->get_unified_key(),
+                a->get_from()->get_unified_key());
       }
     }
 
@@ -460,6 +477,68 @@ void LO_graph::dump_txt()
       }
     }
   }
+
+  fprintf(out_txt, "\n");
+  fprintf(out_txt, "CYCLE ANALYSIS:\n");
+  fprintf(out_txt, "\n");
+
+  int cycle_count= 0;
+
+  for (arc_it= m_arcs.begin();
+       arc_it != m_arcs.end();
+       arc_it++)
+  {
+    a= *arc_it;
+    LO_node *from= a->get_from();
+    LO_node *to= a->get_to();
+
+    if (a->has_loop())
+    {
+      LO_node_list cycle;
+      if (find_path(to, from, cycle))
+      {
+        cycle_count++;
+
+        fprintf(out_txt, "Dumping cycle %d, %s -> %s\n",
+                cycle_count, from->get_qname(), to->get_qname());
+
+        LO_node_list::const_iterator it;
+        LO_node *node;
+        int link= 1;
+
+        for (it= cycle.begin();
+             it != cycle.end();
+             it++, link++)
+        {
+          node= *it;
+          fprintf(out_txt, "  Cycle link %d: %s\n", link, node->get_qname());
+        }
+      }
+      else
+      {
+        fprintf(out_txt, "ARC: %s -> %s declared as loop, but seen no loop.\n",
+                from->get_qname(), to->get_qname());
+      }
+      fprintf(out_txt, "\n");
+    }
+  }
+
+  fprintf(out_txt, "Total of %d cycles found.\n", cycle_count);
+
+  
+  fprintf(out_txt, "unresolved arcs:\n");
+
+  LO_authorised_arc_list::iterator it;
+  LO_authorised_arc *unresolved_arc;
+
+  for (it= m_unresolved_arcs.begin();
+       it != m_unresolved_arcs.end();
+       it++)
+  {
+    unresolved_arc= *it;
+    fprintf(out_txt, "  - %s -> %s\n", unresolved_arc->m_from_name, unresolved_arc->m_to_name);
+  }
+ 
   fclose(out_txt);
   out_txt= NULL;
 }
@@ -472,9 +551,13 @@ public:
   static LO_thread_class *find(int key);
   
   LO_thread_class(const char *category, const char *name);
-  ~LO_thread_class()
+
+  virtual ~LO_thread_class()
   {}
 
+  virtual int get_unified_key() const
+  { return m_key + LO_THREAD_RANGE; }
+
   int get_key() const
   { return m_key; }
 
@@ -522,6 +605,9 @@ public:
   virtual ~LO_mutex_class()
   {}
 
+  virtual int get_unified_key() const
+  { return m_key + LO_MUTEX_RANGE; }
+
   virtual int get_key() const
   { return m_key; }
 
@@ -636,6 +722,9 @@ public:
   virtual ~LO_rwlock_class()
   {}
 
+  virtual int get_unified_key() const
+  { return m_key + LO_RWLOCK_RANGE; }
+
   virtual int get_key() const
   { return m_key; }
 
@@ -760,16 +849,6 @@ void LO_graph::check(const LO_lock *old_
   {
     if (out_log != NULL)
     {
-#ifdef LATER
-      fprintf(out_log,
-        "Error: missing arc %s (%s:%d) -> %s (%s:%d)\n",
-        old_node->get_qname(),
-        old_lock->get_locking_src_file(),
-        old_lock->get_locking_src_line(),
-        new_node->get_qname(),
-        new_lock->get_locking_src_file(),
-        new_lock->get_locking_src_line());
-#endif
       fprintf(out_log,
         "Error: missing arc %s -> %s\n",
         old_node->get_qname(),
@@ -778,7 +857,7 @@ void LO_graph::check(const LO_lock *old_
   }
   else
   {
-    if (arc->has_trace() || arc->has_debug())
+    if (arc->has_trace())
     {
       if (out_log != NULL)
       {
@@ -792,7 +871,10 @@ void LO_graph::check(const LO_lock *old_
           new_lock->get_locking_src_line());
       }
     }
-    // DBUG_ASSERT(arc->has_debug() == false);
+    if (arc->has_debug())
+    {
+      debug_lock_order_break_here();
+    }
   }
 }
 
@@ -1029,7 +1111,7 @@ LO_mutex_class *LO_mutex_class::find_by_
 }
 
 LO_mutex_class::LO_mutex_class(const char *category, const char* name)
-: LO_node(category, name)
+: LO_node("mutex", category, name)
 {
   m_counter++;
   m_key= m_counter;
@@ -1051,7 +1133,7 @@ LO_rwlock_class *LO_rwlock_class::find_b
 }
 
 LO_rwlock_class::LO_rwlock_class(const char *category, const char* name)
-: LO_node(category, name)
+: LO_node("rwlock", category, name)
 {
   m_counter++;
   m_key= m_counter;

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2011-03-31 13:55:55 +0000
+++ b/sql/mysqld.cc	2011-03-31 16:13:26 +0000
@@ -79,383 +79,372 @@
 #include "debug_lock_order.h"
 static LO_authorised_arc debug_lock_order_arcs[]=
 {
-  {"innodb/autoinc_mutex", "innodb/thr_local_mutex", 0},
-  {"innodb/autoinc_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/autoinc_mutex", "innodb/mutex_list_mutex", 0},
-  {"innodb/autoinc_mutex", "innodb/os_mutex", 0},
-
-  {"innodb/buf_pool_mutex", "innodb/mutex_list_mutex", 0},
-  {"innodb/buf_pool_mutex", "innodb/os_mutex", 0},
-  {"innodb/buf_pool_mutex", "innodb/rw_lock_list_mutex", 0},
-  {"innodb/buf_pool_mutex", "innodb/ut_list_mutex", 0},
-  {"innodb/buf_pool_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/buf_pool_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/buf_pool_mutex", "innodb/buf_pool_zip_mutex", 0},
-
-  {"innodb/buf_pool_zip_mutex", "innodb/flush_list_mutex", 0},
-
-  {"innodb/dict_foreign_err_mutex", "sql/THD::LOCK_thd_data", 0}, // ???
-
-  {"innodb/dict_sys_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/ibuf_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/mutex_list_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/os_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/recv_sys_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/rw_lock_list_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/thr_local_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/lock_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/log_flush_order_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/rseg_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/trx_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/trx_undo_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/purge_sys_bh_mutex", 0},
-  {"innodb/dict_sys_mutex", "sql/LOCK_global_system_variables", 0}, // ???
-  {"innodb/dict_sys_mutex", "innodb/autoinc_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/buf_pool_zip_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/srv_sys_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/trx_doublewrite_mutex", 0},
-  {"innodb/dict_sys_mutex", "innodb/dict_foreign_err_mutex", 0},
-  {"innodb/dict_sys_mutex", "sql/LOCK_error_log", 0},
-
-  {"innodb/fil_system_mutex", "innodb/os_mutex", 0},
-  {"innodb/fil_system_mutex", "innodb/rw_lock_list_mutex", 0},
-
-  {"innodb/file_format_max_mutex", "innodb/log_sys_mutex", 0},
-
-  {"innodb/ibuf_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/ibuf_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/ibuf_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/ibuf_mutex", "innodb/os_mutex", 0},
-  {"innodb/ibuf_mutex", "innodb/recv_sys_mutex", 0},
-  {"innodb/ibuf_mutex", "innodb/thr_local_mutex", 0},
-
-  {"innodb/ibuf_bitmap_mutex", "innodb/thr_local_mutex", 0},
-
-  {"innodb/lock_mutex", "innodb/trx_mutex", 0},
-  {"innodb/lock_mutex", "sql/THD::LOCK_thd_data", 0},
-
-  {"innodb/lock_wait_mutex", "innodb/os_mutex", 0},
-  {"innodb/lock_wait_mutex", "innodb/trx_mutex", 0},
-  {"innodb/lock_wait_mutex", "innodb/lock_mutex", 0},
-
-  {"innodb/log_flush_order_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/log_flush_order_mutex", "innodb/os_mutex", 0},
-
-  {"innodb/log_sys_mutex", "innodb/log_flush_order_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/os_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/thr_local_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/rw_lock_list_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/mutex_list_mutex", 0},
-  {"innodb/log_sys_mutex", "innodb/recv_sys_mutex", 0},
-
-  {"innodb/prepare_commit_mutex", "innodb/lock_mutex", 0},
-  {"innodb/prepare_commit_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/prepare_commit_mutex", "innodb/rseg_mutex", 0},
-  {"innodb/prepare_commit_mutex", "innodb/trx_mutex", 0},
-  {"innodb/prepare_commit_mutex", "sql/LOG::LOCK_log", 0},
-  {"innodb/prepare_commit_mutex", "sql/MYSQL_BIN_LOG::LOCK_prep_xids", 0},
-  {"innodb/prepare_commit_mutex", "innodb/read_view_mutex", 0},
-
-  {"innodb/rseg_mutex", "innodb/thr_local_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/log_flush_order_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/purge_sys_bh_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/os_mutex", 0},
-  {"innodb/rseg_mutex", "innodb/buf_pool_zip_mutex", 0},
-
-  {"innodb/rw_lock_list_mutex", "innodb/os_mutex", 0},
-
-  {"innodb/srv_dict_tmpfile_mutex", "innodb/dict_sys_mutex", 0},
-
-  {"innodb/srv_innodb_monitor_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/buf_pool_zip_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/dict_foreign_err_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/ibuf_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/lock_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/log_flush_order_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/mem_pool_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "innodb/os_mutex", 0},
-  {"innodb/srv_innodb_monitor_mutex", "sql/THD::LOCK_thd_data", 0},
-
-  {"innodb/srv_monitor_file_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/dict_foreign_err_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/ibuf_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/lock_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/log_flush_order_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/mem_pool_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/os_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "innodb/srv_innodb_monitor_mutex", 0},
-  {"innodb/srv_monitor_file_mutex", "sql/THD::LOCK_thd_data", 0},
-
-  {"innodb/srv_sys_mutex", "innodb/thr_local_mutex", 0},
-
-  {"innodb/trx_doublewrite_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/trx_doublewrite_mutex", "innodb/os_mutex", 0},
-  {"innodb/trx_doublewrite_mutex", "innodb/thr_local_mutex", 0},
-
-  {"innodb/trx_mutex", "innodb/mutex_list_mutex", 0},
-  {"innodb/trx_mutex", "innodb/os_mutex", 0},
-
-  {"innodb/trx_undo_mutex", "innodb/buf_pool_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/fil_system_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/flush_list_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/log_flush_order_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/log_sys_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/rseg_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/thr_local_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/os_mutex", 0},
-  {"innodb/trx_undo_mutex", "innodb/buf_pool_zip_mutex", 0},
-
-  {"myisam/MYISAM_SHARE::intern_lock", "mysys/KEY_CACHE::cache_lock", 0},
-  {"myisam/MYISAM_SHARE::intern_lock", "sql/LOCK_error_log", 0},
-  {"myisam/MYISAM_SHARE::intern_lock", "sql/THD::LOCK_thd_data", 0},
-
-  {"mysys/my_thread_var::mutex", "sql/LOCK_event_queue", 0},
-  {"mysys/my_thread_var::mutex", "sql/DEBUG_SYNC::mutex", 0},
-  {"mysys/my_thread_var::mutex", "mysys/THR_LOCK::mutex", 0},
-  {"mysys/my_thread_var::mutex", "sql/LOCK_user_locks", 0},
-  {"mysys/my_thread_var::mutex", "sql/MDL_wait::LOCK_wait_status", 0},
-
-  {"mysys/THR_LOCK_myisam", "myisam/MYISAM_SHARE::intern_lock", 0},
-  {"mysys/THR_LOCK_myisam", "mysys/KEY_CACHE::cache_lock", 0},
-  {"mysys/THR_LOCK_myisam", "mysys/THR_LOCK_open", 0},
-  {"mysys/THR_LOCK_myisam", "sql/LOCK_error_log", 0},
-
-  {"mysys/THR_LOCK::mutex", "csv/TINA_SHARE::mutex", 0},
-  {"mysys/THR_LOCK::mutex", "sql/DEBUG_SYNC::mutex", 0},
-
-  {"mysys/THR_LOCK_charset", "mysys/THR_LOCK_open", 0},
-
-  {"csv/tina", "mysys/THR_LOCK_open", 0},
-
-  {"archive/ARCHIVE_SHARE::mutex", "mysys/THR_LOCK_open", 0},
-
-  {"archive/archive_mutex", "mysys/THR_LOCK_open", 0},
-
-  {"sql/Delayed_insert::mutex", "sql/LOCK_delayed_status", 0},
-  {"sql/Delayed_insert::mutex", "myisam/MYISAM_SHARE::intern_lock", 0},
-  {"sql/Delayed_insert::mutex", "mysys/THR_LOCK::mutex", 0},
-  {"sql/Delayed_insert::mutex", "mysys/THR_LOCK_myisam", 0},
-  {"sql/Delayed_insert::mutex", "mysys/THR_LOCK_open", 0},
-  {"sql/Delayed_insert::mutex", "mysys/THR_LOCK_threads", 0},
-  {"sql/Delayed_insert::mutex", "sql/LOCK_plugin", 0},
-  {"sql/Delayed_insert::mutex", "sql/TABLE_SHARE::LOCK_ha_data", 0},
-  {"sql/Delayed_insert::mutex", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/Delayed_insert::mutex", "sql/MDL_map::mutex", 0},
-  {"sql/Delayed_insert::mutex", "sql/MDL_wait::LOCK_wait_status", 0},
-
-  {"sql/LOCK_delayed_insert", "sql/Delayed_insert::mutex", 0},
-  {"sql/LOCK_delayed_insert", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/LOCK_delayed_insert", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_delayed_insert", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/LOCK_delayed_insert", "sql/LOCK_thread_count", 0},
-  {"sql/LOCK_delayed_insert", "sql/LOCK_xid_cache", 0},
-  {"sql/LOCK_delayed_insert", "sql/THD::LOCK_thd_data", 0},
-
-  {"sql/LOCK_delayed_create", "sql/Delayed_insert::mutex", 0},
-  {"sql/LOCK_delayed_create", "sql/LOCK_delayed_insert", 0},
-  {"sql/LOCK_delayed_create", "sql/LOCK_global_system_variables", 0},
-  {"sql/LOCK_delayed_create", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_delayed_create", "sql/LOCK_thread_count", 0},
-  {"sql/LOCK_delayed_create", "sql/THD::LOCK_thd_data", 0},
-  {"sql/LOCK_delayed_create", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/LOCK_delayed_create", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/LOCK_delayed_create", "sql/LOCK_xid_cache", 0},
-
-  {"sql/Event_scheduler::LOCK_scheduler_state", "mysys/LOCK_alarm", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "mysys/my_thread_var::mutex", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_error_log", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_event_queue", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_global_system_variables", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_plugin", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_thread_count", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/LOCK_xid_cache", 0},
-  {"sql/Event_scheduler::LOCK_scheduler_state", "sql/THD::LOCK_thd_data", 0},
-
-  {"sql/LOCK_error_messages", "mysys/THR_LOCK_open", 0},
-
-  {"sql/LOCK_des_key_file", "mysys/THR_LOCK_open", 0},
-
-  {"sql/LOCK_gdl", "mysys/THR_LOCK_open", 0},
-  {"sql/LOCK_gdl", "mysys/THR_LOCK_myisam", 0},
-  {"sql/LOCK_gdl", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_gdl", "innodb/dict_sys_mutex", 0},
-  {"sql/LOCK_gdl", "innodb/lock_mutex", 0},
-  {"sql/LOCK_gdl", "innodb/log_sys_mutex", 0},
-  {"sql/LOCK_gdl", "innodb/mutex_list_mutex", 0},
-  {"sql/LOCK_gdl", "innodb/os_mutex", 0},
-  {"sql/LOCK_gdl", "innodb/srv_sys_mutex", 0},
-  {"sql/LOCK_gdl", "innodb/trx_mutex", 0},
-
-  {"sql/LOCK_active_mi", "myisam/MYISAM_SHARE::intern_lock", 0},
-  {"sql/LOCK_active_mi", "mysys/THR_LOCK::mutex", 0},
-  {"sql/LOCK_active_mi", "mysys/THR_LOCK_myisam", 0},
-  {"sql/LOCK_active_mi", "mysys/THR_LOCK_open", 0},
-  {"sql/LOCK_active_mi", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/LOCK_active_mi", "sql/LOCK_open", 0},
-  {"sql/LOCK_active_mi", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_active_mi", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/LOCK_active_mi", "sql/LOCK_thread_count", 0},
-  {"sql/LOCK_active_mi", "sql/LOCK_xid_cache", 0},
-  {"sql/LOCK_active_mi", "sql/MDL_map::mutex", 0},
-  {"sql/LOCK_active_mi", "sql/Master_info::data_lock", 0},
-  {"sql/LOCK_active_mi", "sql/Relay_log_info::data_lock", 0},
-  {"sql/LOCK_active_mi", "sql/TABLE_SHARE::LOCK_ha_data", 0},
-  {"sql/LOCK_active_mi", "sql/THD::LOCK_thd_data", 0},
-  {"sql/LOCK_active_mi", "mysys/THR_LOCK_charset", 0},
-  {"sql/LOCK_active_mi", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/LOCK_active_mi", "sql/Master_info::run_lock", 0},
-  {"sql/LOCK_active_mi", "sql/Relay_log_info::run_lock", 0},
-  {"sql/LOCK_active_mi", "sql/Slave_reporting_capability::err_lock", 0},
-  {"sql/LOCK_active_mi", "mysys/IO_CACHE::append_buffer_lock", 0},
-  {"sql/LOCK_active_mi", "sql/LOG::LOCK_log", 0},
-  {"sql/LOCK_active_mi", "mysys/LOCK_alarm", 0},
-  {"sql/LOCK_active_mi", "mysys/my_thread_var::mutex", 0},
-  {"sql/LOCK_active_mi", "sql/LOCK_error_log", 0},
-  {"sql/LOCK_active_mi", "sql/MYSQL_RELAY_LOG::LOCK_index", 0},
-
-  {"sql/LOCK_event_queue", "sql/LOCK_error_log", 0},
-
-  {"sql/LOCK_global_system_variables", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_global_system_variables", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/LOCK_global_system_variables", "sql/LOCK_thread_count", 0},
-  {"sql/LOCK_global_system_variables", "sql/Query_cache::structure_guard_mutex", 0},
-  {"sql/LOCK_global_system_variables", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/LOCK_global_system_variables", "mysys/LOCK_alarm", 0},
-  {"sql/LOCK_global_system_variables", "sql/Relay_log_info::data_lock", 0},
-  {"sql/LOCK_global_system_variables", "sql/Relay_log_info::run_lock", 0},
-  {"sql/LOCK_global_system_variables", "sql/LOG::LOCK_log", 0},
-  {"sql/LOCK_global_system_variables", "innodb/file_format_max_mutex", 0},
-  {"sql/LOCK_global_system_variables", "innodb/log_sys_mutex", 0},
-
-  {"sql/LOCK_open", "myisam/MYISAM_SHARE::intern_lock", 0},
-  {"sql/LOCK_open", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/LOCK_open", "mysys/THR_LOCK_myisam", 0},
-  {"sql/LOCK_open", "mysys/THR_LOCK_open", 0},
-  {"sql/LOCK_open", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_open", "mysys/THR_LOCK_charset", 0},
-  {"sql/LOCK_open", "sql/LOCK_error_log", 0},
-  {"sql/LOCK_open", "sql/hash_filo::lock", 0},
-  {"sql/LOCK_open", "csv/tina", 0},
-  {"sql/LOCK_open", "example/example", 0},
-  {"sql/LOCK_open", "innodb/dict_sys_mutex", 0},
-  {"sql/LOCK_open", "innodb/innobase_share_mutex", 0},
-  {"sql/LOCK_open", "mysys/THR_LOCK_heap", 0},
-  {"sql/LOCK_open", "sql/MDL_wait::LOCK_wait_status", 0},
-  {"sql/LOCK_open", "archive/archive_mutex", 0},
-  {"sql/LOCK_open", "mysys/my_thread_var::mutex", 0},
-  {"sql/LOCK_open", "blackhole/blackhole", 0},
-
-  {"sql/LOCK_plugin", "sql/LOCK_error_log", 0},
-  {"sql/LOCK_plugin", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/LOCK_plugin", "mysys/THR_LOCK_open", 0},
-
-  {"sql/LOCK_status", "innodb/buf_pool_mutex", 0},
-  {"sql/LOCK_status", "innodb/buf_pool_zip_mutex", 0},
-  {"sql/LOCK_status", "innodb/flush_list_mutex", 0},
-  {"sql/LOCK_status", "innodb/srv_innodb_monitor_mutex", 0},
-  {"sql/LOCK_status", "sql/LOCK_active_mi", 0},
-  {"sql/LOCK_status", "sql/LOCK_global_system_variables", 0},
-  {"sql/LOCK_status", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/LOCK_status", "sql/Relay_log_info::data_lock", 0},
-  {"sql/LOCK_status", "sql/LOCK_thread_count", 0},
-  {"sql/LOCK_status", "sql/LOG::LOCK_log", 0},
-  {"sql/LOCK_status", "sql/Query_cache::structure_guard_mutex", 0},
-
-  {"sql/LOCK_thread_count", "sql/LOCK_plugin", 0},
-  {"sql/LOCK_thread_count", "sql/LOCK_prepared_stmt_count", 0},
-  {"sql/LOCK_thread_count", "sql/THD::LOCK_thd_data", 0},
-  {"sql/LOCK_thread_count", "innodb/mutex_list_mutex", 0},
-  {"sql/LOCK_thread_count", "innodb/os_mutex", 0},
-  {"sql/LOCK_thread_count", "innodb/thr_local_mutex", 0},
-  {"sql/LOCK_thread_count", "innodb/trx_mutex", 0},
-  {"sql/LOCK_thread_count", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/LOCK_thread_count", "sql/LOCK_user_locks", 0},
-  {"sql/LOCK_thread_count", "sql/LOCK_xid_cache", 0},
-  {"sql/LOCK_thread_count", "sql/MDL_map::mutex", 0},
-  {"sql/LOCK_thread_count", "mysys/my_thread_var::mutex", 0},
-  {"sql/LOCK_thread_count", "sql/LOCK_event_queue", 0},
-  {"sql/LOCK_thread_count", "mysys/THR_LOCK_open", 0},
-
-  {"sql/THD::LOCK_thd_data", "mysys/LOCK_alarm", 0},
-  {"sql/THD::LOCK_thd_data", "sql/LOCK_error_log", 0},
-  {"sql/THD::LOCK_thd_data", "sql/LOCK_event_queue", 0},
-  {"sql/THD::LOCK_thd_data", "mysys/THR_LOCK::mutex", 0},
-  {"sql/THD::LOCK_thd_data", "sql/DEBUG_SYNC::mutex", 0},
-  {"sql/THD::LOCK_thd_data", "sql/LOCK_user_locks", 0},
-  {"sql/THD::LOCK_thd_data", "sql/MDL_wait::LOCK_wait_status", 0},
-
-  {"sql/LOCK_uuid_generator", "sql/LOCK_thread_count", 0},
-
-  {"sql/Master_info::data_lock", "sql/Relay_log_info::data_lock", 0},
-  {"sql/Master_info::data_lock", "mysys/IO_CACHE::append_buffer_lock", 0},
-  {"sql/Master_info::data_lock", "mysys/THR_LOCK_open", 0},
-  {"sql/Master_info::data_lock", "sql/LOG::LOCK_log", 0},
-  {"sql/Master_info::data_lock", "sql/MYSQL_RELAY_LOG::LOCK_index", 0},
-
-  {"sql/Master_info::run_lock", "sql/Relay_log_info::run_lock", 0},
-  {"sql/Master_info::run_lock", "sql/Slave_reporting_capability::err_lock", 0},
-
-  {"sql/Relay_log_info::run_lock", "sql/Slave_reporting_capability::err_lock", 0},
-  {"sql/Relay_log_info::run_lock", "sql/Relay_log_info::data_lock", 0},
-
-  {"sql/MYSQL_BIN_LOG::LOCK_index", "mysys/THR_LOCK_open", 0},
-  {"sql/MYSQL_BIN_LOG::LOCK_index", "sql/LOCK_thread_count", 0},
-
-  {"sql/MYSQL_RELAY_LOG::LOCK_index", "mysys/IO_CACHE::append_buffer_lock", 0},
-  {"sql/MYSQL_RELAY_LOG::LOCK_index", "mysys/THR_LOCK_open", 0},
-  {"sql/MYSQL_RELAY_LOG::LOCK_index", "sql/LOCK_thread_count", 0},
-  {"sql/MYSQL_RELAY_LOG::LOCK_index", "sql/Relay_log_info::log_space_lock", 0},
-
-  {"sql/LOG::LOCK_log", "mysys/THR_LOCK_open", 0},
-  {"sql/LOG::LOCK_log", "sql/LOCK_thread_count", 0},
-  {"sql/LOG::LOCK_log", "sql/MYSQL_BIN_LOG::LOCK_index", 0},
-  {"sql/LOG::LOCK_log", "mysys/IO_CACHE::append_buffer_lock", 0},
-  {"sql/LOG::LOCK_log", "sql/LOCK_error_log", 0},
-  {"sql/LOG::LOCK_log", "sql/MYSQL_BIN_LOG::LOCK_prep_xids", 0},
-  {"sql/LOG::LOCK_log", "sql/MYSQL_RELAY_LOG::LOCK_index", 0},
-  {"sql/LOG::LOCK_log", "sql/Relay_log_info::log_space_lock", 0},
-
-  {"sql/hash_filo::lock", "sql/LOCK_global_system_variables", 0},
-  {"sql/hash_filo::lock", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/hash_filo::lock", "sql/LOCK_plugin", 0},
-  {"sql/hash_filo::lock", "sql/LOCK_error_log", 0},
-  {"sql/hash_filo::lock", "sql/LOG::LOCK_log", 0},
-
-  {"sql/tz_LOCK", "myisam/MYISAM_SHARE::intern_lock", 0},
-  {"sql/tz_LOCK", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/tz_LOCK", "mysys/THR_LOCK::mutex", 0},
-  {"sql/tz_LOCK", "sql/LOCK_error_log", 0},
-  {"sql/tz_LOCK", "sql/LOCK_open", 0},
-  {"sql/tz_LOCK", "sql/MDL_map::mutex", 0},
-  {"sql/tz_LOCK", "sql/THD::LOCK_thd_data", 0},
-
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "archive/ARCHIVE_SHARE::mutex", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "myisam/MYISAM_SHARE::intern_lock", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "mysys/THR_LOCK_open", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "mysys/KEY_CACHE::cache_lock", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "sql/LOCK_global_system_variables", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "sql/LOCK_plugin", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "sql/Query_cache::structure_guard_mutex", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "sql/TABLE_SHARE::LOCK_ha_data", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "innodb/autoinc_mutex", 0},
-  {"sql/HA_DATA_PARTITION::LOCK_auto_inc", "sql/LOG::LOCK_log", 0},
+  {"mutex/innodb/autoinc_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/autoinc_mutex", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/innodb/autoinc_mutex", "mutex/innodb/os_mutex", 0},
+
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/rw_lock_list_mutex", 0},
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/ut_list_mutex", 0},
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/buf_pool_mutex", "mutex/innodb/buf_pool_zip_mutex", 0},
+
+  {"mutex/innodb/buf_pool_zip_mutex", "mutex/innodb/flush_list_mutex", 0},
+
+  {"mutex/innodb/dict_foreign_err_mutex", "mutex/sql/THD::LOCK_thd_data", 0}, // ???
+
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/ibuf_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/recv_sys_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/rw_lock_list_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/lock_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/log_flush_order_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/rseg_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/trx_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/trx_undo_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/purge_sys_bh_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/sql/LOCK_global_system_variables", 0}, // ???
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/autoinc_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/buf_pool_zip_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/srv_sys_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/trx_doublewrite_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/innodb/dict_foreign_err_mutex", 0},
+  {"mutex/innodb/dict_sys_mutex", "mutex/sql/LOCK_error_log", 0},
+
+  {"mutex/innodb/fil_system_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/fil_system_mutex", "mutex/innodb/rw_lock_list_mutex", 0},
+
+  {"mutex/innodb/file_format_max_mutex", "mutex/innodb/log_sys_mutex", 0},
+
+  {"mutex/innodb/ibuf_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/ibuf_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/ibuf_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/ibuf_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/ibuf_mutex", "mutex/innodb/recv_sys_mutex", 0},
+
+
+  {"mutex/innodb/lock_mutex", "mutex/innodb/trx_mutex", 0},
+  {"mutex/innodb/lock_mutex", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/innodb/lock_wait_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/lock_wait_mutex", "mutex/innodb/trx_mutex", 0},
+  {"mutex/innodb/lock_wait_mutex", "mutex/innodb/lock_mutex", 0},
+
+  {"mutex/innodb/log_flush_order_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/log_flush_order_mutex", "mutex/innodb/os_mutex", 0},
+
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/log_flush_order_mutex", 0},
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/rw_lock_list_mutex", 0},
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/innodb/log_sys_mutex", "mutex/innodb/recv_sys_mutex", 0},
+
+  {"mutex/innodb/prepare_commit_mutex", "mutex/innodb/lock_mutex", 0},
+  {"mutex/innodb/prepare_commit_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/prepare_commit_mutex", "mutex/innodb/rseg_mutex", 0},
+  {"mutex/innodb/prepare_commit_mutex", "mutex/innodb/trx_mutex", 0},
+  {"mutex/innodb/prepare_commit_mutex", "mutex/sql/LOG::LOCK_log", 0},
+  {"mutex/innodb/prepare_commit_mutex", "mutex/sql/MYSQL_BIN_LOG::LOCK_prep_xids", 0},
+  {"mutex/innodb/prepare_commit_mutex", "mutex/innodb/read_view_mutex", 0},
+
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/log_flush_order_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/purge_sys_bh_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/rseg_mutex", "mutex/innodb/buf_pool_zip_mutex", 0},
+
+  {"mutex/innodb/rw_lock_list_mutex", "mutex/innodb/os_mutex", 0},
+
+  {"mutex/innodb/srv_dict_tmpfile_mutex", "mutex/innodb/dict_sys_mutex", 0},
+
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/buf_pool_zip_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/dict_foreign_err_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/ibuf_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/lock_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/log_flush_order_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/mem_pool_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/srv_innodb_monitor_mutex", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/dict_foreign_err_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/ibuf_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/lock_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/log_flush_order_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/mem_pool_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/innodb/srv_innodb_monitor_mutex", 0},
+  {"mutex/innodb/srv_monitor_file_mutex", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/innodb/trx_doublewrite_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/trx_doublewrite_mutex", "mutex/innodb/os_mutex", 0},
+
+  {"mutex/innodb/trx_mutex", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/innodb/trx_mutex", "mutex/innodb/os_mutex", 0},
+
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/fil_system_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/log_flush_order_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/rseg_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/os_mutex", 0},
+  {"mutex/innodb/trx_undo_mutex", "mutex/innodb/buf_pool_zip_mutex", 0},
+
+  {"mutex/myisam/MYISAM_SHARE::intern_lock", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/myisam/MYISAM_SHARE::intern_lock", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/myisam/MYISAM_SHARE::intern_lock", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/mysys/my_thread_var::mutex", "mutex/sql/LOCK_event_queue", 0},
+  {"mutex/mysys/my_thread_var::mutex", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/mysys/my_thread_var::mutex", "mutex/mysys/THR_LOCK::mutex", 0},
+  {"mutex/mysys/my_thread_var::mutex", "mutex/sql/LOCK_user_locks", 0},
+  {"mutex/mysys/my_thread_var::mutex", "mutex/sql/MDL_wait::LOCK_wait_status", 0},
+
+  {"mutex/mysys/THR_LOCK_myisam", "mutex/myisam/MYISAM_SHARE::intern_lock", 0},
+  {"mutex/mysys/THR_LOCK_myisam", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/mysys/THR_LOCK_myisam", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/mysys/THR_LOCK_myisam", "mutex/sql/LOCK_error_log", 0},
+
+  {"mutex/mysys/THR_LOCK::mutex", "mutex/csv/TINA_SHARE::mutex", 0},
+  {"mutex/mysys/THR_LOCK::mutex", "mutex/sql/DEBUG_SYNC::mutex", 0},
+
+  {"mutex/mysys/THR_LOCK_charset", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/csv/tina", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/archive/ARCHIVE_SHARE::mutex", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/archive/archive_mutex", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/LOCK_delayed_status", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/myisam/MYISAM_SHARE::intern_lock", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/mysys/THR_LOCK::mutex", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/mysys/THR_LOCK_myisam", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/mysys/THR_LOCK_threads", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/TABLE_SHARE::LOCK_ha_data", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/MDL_map::mutex", 0},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/MDL_wait::LOCK_wait_status", 0},
+
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/Delayed_insert::mutex", 0},
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/LOCK_xid_cache", 0},
+  {"mutex/sql/LOCK_delayed_insert", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/Delayed_insert::mutex", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/LOCK_delayed_insert", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/LOCK_global_system_variables", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/THD::LOCK_thd_data", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/LOCK_delayed_create", "mutex/sql/LOCK_xid_cache", 0},
+
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/mysys/LOCK_alarm", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/mysys/my_thread_var::mutex", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_event_queue", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_global_system_variables", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/LOCK_xid_cache", 0},
+  {"mutex/sql/Event_scheduler::LOCK_scheduler_state", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/sql/LOCK_error_messages", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/sql/LOCK_des_key_file", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/sql/LOCK_gdl", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/mysys/THR_LOCK_myisam", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/dict_sys_mutex", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/lock_mutex", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/log_sys_mutex", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/os_mutex", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/srv_sys_mutex", 0},
+  {"mutex/sql/LOCK_gdl", "mutex/innodb/trx_mutex", 0},
+
+  {"mutex/sql/LOCK_active_mi", "mutex/myisam/MYISAM_SHARE::intern_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/THR_LOCK::mutex", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/THR_LOCK_myisam", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_open", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_xid_cache", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/MDL_map::mutex", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/Master_info::data_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/Relay_log_info::data_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/TABLE_SHARE::LOCK_ha_data", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/THD::LOCK_thd_data", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/THR_LOCK_charset", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/Master_info::run_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/Relay_log_info::run_lock", LO_FLAG_TRACE | LO_FLAG_DEBUG}, // testing flags
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/Slave_reporting_capability::err_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/IO_CACHE::append_buffer_lock", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOG::LOCK_log", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/LOCK_alarm", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/mysys/my_thread_var::mutex", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/MYSQL_RELAY_LOG::LOCK_index", 0},
+
+  {"mutex/sql/LOCK_event_queue", "mutex/sql/LOCK_error_log", 0},
+
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/Query_cache::structure_guard_mutex", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/mysys/LOCK_alarm", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/Relay_log_info::data_lock", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/Relay_log_info::run_lock", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/LOG::LOCK_log", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/innodb/file_format_max_mutex", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/innodb/log_sys_mutex", 0},
+
+  {"mutex/sql/LOCK_open", "mutex/myisam/MYISAM_SHARE::intern_lock", 0},
+  {"mutex/sql/LOCK_open", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/LOCK_open", "mutex/mysys/THR_LOCK_myisam", 0},
+  {"mutex/sql/LOCK_open", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/LOCK_open", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_open", "mutex/mysys/THR_LOCK_charset", 0},
+  {"mutex/sql/LOCK_open", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/LOCK_open", "mutex/sql/hash_filo::lock", 0},
+  {"mutex/sql/LOCK_open", "mutex/csv/tina", 0},
+  {"mutex/sql/LOCK_open", "mutex/example/example", 0},
+  {"mutex/sql/LOCK_open", "mutex/innodb/dict_sys_mutex", 0},
+  {"mutex/sql/LOCK_open", "mutex/innodb/innobase_share_mutex", 0},
+  {"mutex/sql/LOCK_open", "mutex/mysys/THR_LOCK_heap", 0},
+  {"mutex/sql/LOCK_open", "mutex/sql/MDL_wait::LOCK_wait_status", 0},
+  {"mutex/sql/LOCK_open", "mutex/archive/archive_mutex", 0},
+  {"mutex/sql/LOCK_open", "mutex/mysys/my_thread_var::mutex", 0},
+  {"mutex/sql/LOCK_open", "mutex/blackhole/blackhole", 0},
+
+  {"mutex/sql/LOCK_plugin", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/LOCK_plugin", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/LOCK_plugin", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/sql/LOCK_status", "mutex/innodb/buf_pool_mutex", 0},
+  {"mutex/sql/LOCK_status", "mutex/innodb/buf_pool_zip_mutex", 0},
+  {"mutex/sql/LOCK_status", "mutex/innodb/flush_list_mutex", 0},
+  {"mutex/sql/LOCK_status", "mutex/innodb/srv_innodb_monitor_mutex", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/LOCK_active_mi", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/LOCK_global_system_variables", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/Relay_log_info::data_lock", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/LOG::LOCK_log", 0},
+  {"mutex/sql/LOCK_status", "mutex/sql/Query_cache::structure_guard_mutex", 0},
+
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/LOCK_prepared_stmt_count", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/THD::LOCK_thd_data", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/innodb/mutex_list_mutex", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/innodb/os_mutex", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/innodb/trx_mutex", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/LOCK_user_locks", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/LOCK_xid_cache", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/MDL_map::mutex", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/mysys/my_thread_var::mutex", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/sql/LOCK_event_queue", 0},
+  {"mutex/sql/LOCK_thread_count", "mutex/mysys/THR_LOCK_open", 0},
+
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/mysys/LOCK_alarm", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/sql/LOCK_event_queue", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/mysys/THR_LOCK::mutex", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/sql/DEBUG_SYNC::mutex", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/sql/LOCK_user_locks", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/sql/MDL_wait::LOCK_wait_status", 0},
+
+  {"mutex/sql/LOCK_uuid_generator", "mutex/sql/LOCK_thread_count", 0},
+
+  {"mutex/sql/Master_info::data_lock", "mutex/sql/Relay_log_info::data_lock", 0},
+  {"mutex/sql/Master_info::data_lock", "mutex/mysys/IO_CACHE::append_buffer_lock", 0},
+  {"mutex/sql/Master_info::data_lock", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/Master_info::data_lock", "mutex/sql/LOG::LOCK_log", 0},
+  {"mutex/sql/Master_info::data_lock", "mutex/sql/MYSQL_RELAY_LOG::LOCK_index", 0},
+
+  {"mutex/sql/Master_info::run_lock", "mutex/sql/Relay_log_info::run_lock", 0},
+  {"mutex/sql/Master_info::run_lock", "mutex/sql/Slave_reporting_capability::err_lock", 0},
+
+  {"mutex/sql/Relay_log_info::run_lock", "mutex/sql/Slave_reporting_capability::err_lock", 0},
+  {"mutex/sql/Relay_log_info::run_lock", "mutex/sql/Relay_log_info::data_lock", 0},
+
+  {"mutex/sql/MYSQL_BIN_LOG::LOCK_index", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/MYSQL_BIN_LOG::LOCK_index", "mutex/sql/LOCK_thread_count", 0},
+
+  {"mutex/sql/MYSQL_RELAY_LOG::LOCK_index", "mutex/mysys/IO_CACHE::append_buffer_lock", 0},
+  {"mutex/sql/MYSQL_RELAY_LOG::LOCK_index", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/MYSQL_RELAY_LOG::LOCK_index", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/MYSQL_RELAY_LOG::LOCK_index", "mutex/sql/Relay_log_info::log_space_lock", 0},
+
+  {"mutex/sql/LOG::LOCK_log", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/sql/LOCK_thread_count", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/sql/MYSQL_BIN_LOG::LOCK_index", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/mysys/IO_CACHE::append_buffer_lock", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/sql/MYSQL_BIN_LOG::LOCK_prep_xids", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/sql/MYSQL_RELAY_LOG::LOCK_index", 0},
+  {"mutex/sql/LOG::LOCK_log", "mutex/sql/Relay_log_info::log_space_lock", 0},
+
+  {"mutex/sql/hash_filo::lock", "mutex/sql/LOCK_global_system_variables", 0},
+  {"mutex/sql/hash_filo::lock", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/hash_filo::lock", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/hash_filo::lock", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/hash_filo::lock", "mutex/sql/LOG::LOCK_log", 0},
+
+  {"mutex/sql/tz_LOCK", "mutex/myisam/MYISAM_SHARE::intern_lock", 0},
+  {"mutex/sql/tz_LOCK", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/tz_LOCK", "mutex/mysys/THR_LOCK::mutex", 0},
+  {"mutex/sql/tz_LOCK", "mutex/sql/LOCK_error_log", 0},
+  {"mutex/sql/tz_LOCK", "mutex/sql/LOCK_open", 0},
+  {"mutex/sql/tz_LOCK", "mutex/sql/MDL_map::mutex", 0},
+  {"mutex/sql/tz_LOCK", "mutex/sql/THD::LOCK_thd_data", 0},
+
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/archive/ARCHIVE_SHARE::mutex", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/myisam/MYISAM_SHARE::intern_lock", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/mysys/THR_LOCK_open", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/mysys/KEY_CACHE::cache_lock", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/sql/LOCK_global_system_variables", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/sql/LOCK_plugin", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/sql/Query_cache::structure_guard_mutex", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/sql/TABLE_SHARE::LOCK_ha_data", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/innodb/autoinc_mutex", 0},
+  {"mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc", "mutex/sql/LOG::LOCK_log", 0},
 
 /*
   Error: Cycle dependency, mysys/my_thread_var::mutex -> sql/Delayed_insert::mutex
@@ -463,25 +452,25 @@ static LO_authorised_arc debug_lock_orde
   Cycle link 2: sql/THD::LOCK_thd_data
   Cycle link 3: mysys/my_thread_var::mutex
 */
-  {"sql/Delayed_insert::mutex", "sql/THD::LOCK_thd_data", 0},
-  {"sql/THD::LOCK_thd_data", "mysys/my_thread_var::mutex", 0},
-  {"mysys/my_thread_var::mutex", "sql/Delayed_insert::mutex", LO_FLAG_LOOP},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/THD::LOCK_thd_data", 0},
+  {"mutex/sql/THD::LOCK_thd_data", "mutex/mysys/my_thread_var::mutex", 0},
+  {"mutex/mysys/my_thread_var::mutex", "mutex/sql/Delayed_insert::mutex", LO_FLAG_LOOP},
 
 /*
   Error: Cycle dependency, sql/Delayed_insert::mutex -> sql/LOCK_open
   Cycle link 1: sql/LOCK_open
   Cycle link 2: sql/Delayed_insert::mutex
 */
-  {"sql/Delayed_insert::mutex", "sql/LOCK_open", 0},
-  {"sql/LOCK_open", "sql/Delayed_insert::mutex", LO_FLAG_LOOP},
+  {"mutex/sql/Delayed_insert::mutex", "mutex/sql/LOCK_open", 0},
+  {"mutex/sql/LOCK_open", "mutex/sql/Delayed_insert::mutex", LO_FLAG_LOOP},
 
 /*
   Error: Cycle dependency, sql/LOCK_active_mi -> sql/LOCK_global_system_variables
   Cycle link 1: sql/LOCK_global_system_variables
   Cycle link 2: sql/LOCK_active_mi
 */
-  {"sql/LOCK_active_mi", "sql/LOCK_global_system_variables", 0},
-  {"sql/LOCK_global_system_variables", "sql/LOCK_active_mi", LO_FLAG_LOOP},
+  {"mutex/sql/LOCK_active_mi", "mutex/sql/LOCK_global_system_variables", 0},
+  {"mutex/sql/LOCK_global_system_variables", "mutex/sql/LOCK_active_mi", LO_FLAG_LOOP},
 
 /*
   Error: Cycle dependency, sql/LOCK_open -> sql/LOCK_delayed_insert
@@ -489,7 +478,7 @@ static LO_authorised_arc debug_lock_orde
   Cycle link 2: sql/Delayed_insert::mutex
   Cycle link 3: sql/LOCK_open
 */
-  {"sql/LOCK_open", "sql/LOCK_delayed_insert", LO_FLAG_LOOP},
+  {"mutex/sql/LOCK_open", "mutex/sql/LOCK_delayed_insert", LO_FLAG_LOOP},
 
 /*
   Error: Cycle dependency, mysys/my_thread_var::mutex -> sql/LOG::LOCK_log
@@ -497,7 +486,7 @@ static LO_authorised_arc debug_lock_orde
   Cycle link 2: sql/LOCK_thread_count
   Cycle link 3: mysys/my_thread_var::mutex
 */
-  {"mysys/my_thread_var::mutex", "sql/LOG::LOCK_log", LO_FLAG_LOOP},
+  {"mutex/mysys/my_thread_var::mutex", "mutex/sql/LOG::LOCK_log", LO_FLAG_LOOP},
 
   {NULL, NULL, 0}
 };


Attachment: [text/bzr-bundle] bzr/marc.alff@oracle.com-20110331161326-c6ox1175lwp6d2tr.bundle
Thread
bzr commit into mysql-trunk-lock-order branch (marc.alff:3351) Marc Alff31 Mar