#At lp:maria

 2776 [email protected]  2009-12-02
      Fix PBXT crash during shutdown if shutdown happens early (like wrong 
command args).
      modified:
        storage/pbxt/src/myxt_xt.cc

=== modified file 'storage/pbxt/src/myxt_xt.cc'
--- a/storage/pbxt/src/myxt_xt.cc       2009-12-01 09:50:46 +0000
+++ b/storage/pbxt/src/myxt_xt.cc       2009-12-02 18:07:59 +0000
@@ -3112,10 +3112,19 @@ xtPublic void *myxt_create_thread()
         * references to the PBXT plugin object and will effectively deadlock 
the plugin so 
         * that server will have to force plugin shutdown. To avoid deadlocking 
and forced shutdown 
         * we must dereference the plugin after creating THD objects.
+        * Similarly to global_system_variables.table_plugin as described above,
+        * new_thd->valriables.table_plugin can also become NULL due to 
shutdown.
         */
-       LEX_STRING& plugin_name = 
REF_MYSQL_PLUGIN(new_thd->variables.table_plugin)->name;
+       plugin_ref table_plugin = new_thd->variables.table_plugin;
+       if (!table_plugin) {
+         delete new_thd;
+         xt_register_xterr(XT_REG_CONTEXT, XT_ERR_MYSQL_NO_THREAD);
+         return NULL;
+       }
+
+       LEX_STRING& plugin_name = REF_MYSQL_PLUGIN(table_plugin)->name;
        if ((plugin_name.length == 4) && (strncmp(plugin_name.str, "PBXT", 
plugin_name.length) == 0)) {
-               REF_MYSQL_PLUGIN(new_thd->variables.table_plugin)->ref_count--;
+               REF_MYSQL_PLUGIN(table_plugin)->ref_count--;
        }
        new_thd->thread_stack = (char *) &new_thd;
        new_thd->store_globals();


_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to