Hi, Sergey! Ok to push. A couple of comments below: On Jan 27, Sergey Vojtovich wrote:
revno: 4009 revision-id: svoj@mariadb.org-20140127090430-g63lt751yxw9ddud parent: sergii@pisem.net-20131217162654-dw2zlm3td1p12bxl committer: Sergey Vojtovich <svoj@mariadb.org> branch nick: 5.5-mdev5345 timestamp: Mon 2014-01-27 13:04:30 +0400 message: MDEV-5345 - Deadlock between mysql_change_user(), SHOW VARIABLES and INSTALL PLUGIN
=== modified file 'sql/sql_plugin.cc' --- a/sql/sql_plugin.cc 2013-12-12 17:14:08 +0000 +++ b/sql/sql_plugin.cc 2014-01-27 09:04:30 +0000 @@ -1196,6 +1190,9 @@ static void plugin_deinitialize(struct s if (ref_check && plugin->ref_count) sql_print_error("Plugin '%s' has ref_count=%d after deinitialization.", plugin->name.str, plugin->ref_count); + + mysql_del_sys_var_chain(plugin->system_vars); + restore_pluginvar_names(plugin->system_vars);
Can mysql_del_sys_var_chain() be called from inside restore_pluginvar_names() ? They seem always to be called together.
@@ -1342,7 +1335,8 @@ void plugin_unlock_list(THD *thd, plugin }
-static int plugin_initialize(struct st_plugin_int *plugin) +static int plugin_initialize(MEM_ROOT *tmp_root, struct st_plugin_int *plugin, + int *argc, char **argv, bool options_only) {
I thought you'll rename a function :) But that's just fine too, whatever you prefer. Regards, Sergei