Skip to content
Browse files

Speculative fix for MySQL crashes (#1135)

Both of these are caused by the VIO ptr ending up as null in the middle of reading/writing to a connection - I can't find any indication of a fix for this made to MySQL, so don't think it is a bug fix we're missing, but there are some musings around the internet that it could be caused by improper thread-safety initialisation.

`my_init` (what we had here) is called internally by `mysql_library_init` but I think would have still led to an automatic `mysql_library_init` call the first time `mysql_init` was called (which we can do on a thread in case of threaded connections), which is exactly the thread-safety issue called out by the MySQL docs, so hopefully doing things properly here will help.
  • Loading branch information
asherkin committed Dec 15, 2019
1 parent def6d0f commit 9cd4f9c210fc94e07c9025fbbd459ed4298cc701
Showing with 7 additions and 5 deletions.
  1. +7 −5 extensions/mysql/extension.cpp
@@ -46,18 +46,21 @@ SMEXT_LINK(&g_MySqlDBI);

bool DBI_MySQL::SDK_OnLoad(char *error, size_t maxlength, bool late)
if (mysql_library_init(0, NULL, NULL) != 0) {
smutils->Format(error, maxlength, "Could not initialize MySQL client library");
return false;



return true;

void DBI_MySQL::SDK_OnUnload()
//:TODO: is this needed?


const char *DBI_MySQL::GetExtensionVerString()
@@ -69,4 +72,3 @@ const char *DBI_MySQL::GetExtensionDateString()

0 comments on commit 9cd4f9c

Please sign in to comment.
You can’t perform that action at this time.