Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-5345

Deadlock between mysql_change_user(), SHOW VARIABLES and INSTALL PLUGIN

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.5.34
    • Fix Version/s: 5.5.35
    • Component/s: None
    • Labels:
      None

      Description

      3 threads required to reproduce this deadlock:
      thread1: mysql_change_user() (or connects/disconnects)
      thread2: INSTALL PLUGIN
      thread3: SHOW VARIABLES

      Easily repeatable with mtr test case:

      delimiter |;
      CREATE PROCEDURE p_install(x INT)
      BEGIN
        DECLARE CONTINUE HANDLER FOR 1126 BEGIN END;
        WHILE x DO
          SET x= x - 1;
          INSTALL PLUGIN no_such_plugin SONAME 'no_such_object';
        END WHILE;
      END|
      
      CREATE PROCEDURE p_show_vars(x INT)
      WHILE x DO
        SET x= x - 1;
        SHOW VARIABLES;
      END WHILE|
      delimiter ;|
      
      connect(con1, localhost, root,,);
      connect(con2, localhost, root,,);
      
      connection con1;
      --send CALL p_install(100);
      
      connection con2;
      --send CALL p_show_vars(100);
      
      connection default;
      
      disable_result_log;
      let $i= 100;
      while ($i)
      {
        change_user;
        dec $i;
      }
      
      connection con1;
      reap;
      connection con2;
      reap;
      connection default;
      enable_result_log;
      
      disconnect con1;
      disconnect con2;
      DROP PROCEDURE p_install;
      DROP PROCEDURE p_show_vars;
      

        Attachments

          Issue links

            Activity

              People

              • Assignee:
                svoj Sergey Vojtovich
                Reporter:
                svoj Sergey Vojtovich
              • Votes:
                1 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 50 minutes
                  50m