diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 12f0cc4ca7285c584ccd6f5a7c68871e664ffb19..60220ffc8895f92cb074c8bb11aa543776a84e64 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -336,6 +336,8 @@ THD::~THD() #ifndef DBUG_OFF dbug_sentry = THD_SENTRY_GONE; #endif + /* Reset stmt_backup.mem_root to not double-free memory from thd.mem_root */ + init_alloc_root(&stmt_backup.mem_root, 0, 0); DBUG_VOID_RETURN; } diff --git a/sql/sql_class.h b/sql/sql_class.h index c1cd65edf763c9ac81b007cbedf5c54b8928e832..5390e8a4ac4728a01f1c1238468157b3bf26956c 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -582,8 +582,7 @@ public: Statement_map stmt_map; /* keeps THD state while it is used for active statement - Note, that double free_root() is safe, so we don't need to do any - special cleanup for it in THD destructor. + Note: we perform special cleanup for it in THD destructor. */ Statement stmt_backup; /*