Bug#52884 mysql-test-run does not work with --debug option

Server crashes on 64bit linux with 'double free or corruption'
message, on 32bit mysql-test-run silently fails on bootstrap
stage. The problem is that FreeState() is called twice
for init_settings struct in _db_end_ function.
The fix is to remove superfluous FreeState() call.
Additional fix:
fixed discrepancy of result file when
debug & valgrind options are enabled
for MTR.

dbug/dbug.c:
  The problem is that FreeState() is called twice
  for init_settings struct in _db_end_ function.
  The fix is to remove superfluous FreeState() call.
mysql-test/r/variables_debug.result:
  fixed discrepancy of result file when
  debug & valgrind options are enabled
  for MTR.
mysql-test/t/variables_debug.test:
  fixed discrepancy of result file when
  debug & valgrind options are enabled
  for MTR.
sql/set_var.cc:
  fixed discrepancy of result file when
  debug & valgrind options are enabled
  for MTR.
This commit is contained in:
Sergey Glukhov 2010-05-20 10:31:03 +04:00
commit b8af4ab216
4 changed files with 12 additions and 5 deletions

View file

@ -4239,10 +4239,15 @@ bool sys_var_thd_dbug::check(THD *thd, set_var *var)
bool sys_var_thd_dbug::update(THD *thd, set_var *var)
{
char buf[256];
String str(buf, sizeof(buf), system_charset_info), *res;
res= var->value->val_str(&str);
if (var->type == OPT_GLOBAL)
DBUG_SET_INITIAL(var ? var->value->str_value.c_ptr() : "");
DBUG_SET_INITIAL(res ? res->c_ptr() : "");
else
DBUG_SET(var ? var->value->str_value.c_ptr() : "");
DBUG_SET(res ? res->c_ptr() : "");
return 0;
}