Commit 88eee63d authored by monty@mysql.com's avatar monty@mysql.com

Set thread_stack after return from end_thread()

Fixes core dump when reusing thread when running debug binary
parent f5804869
...@@ -447,7 +447,7 @@ All benchmarks takes the following options: ...@@ -447,7 +447,7 @@ All benchmarks takes the following options:
--create-options=# --create-options=#
Extra argument to all create statements. If you for example want to Extra argument to all create statements. If you for example want to
create all MySQL tables as BDB tables use: create all MySQL tables as BDB tables use:
--create-options=TYPE=BDB --create-options=ENGINE=BDB
--database (Default $opt_database) --database (Default $opt_database)
In which database the test tables are created. In which database the test tables are created.
......
...@@ -174,29 +174,29 @@ sub new ...@@ -174,29 +174,29 @@ sub new
# Some fixes that depends on the environment # Some fixes that depends on the environment
if (defined($main::opt_create_options) && if (defined($main::opt_create_options) &&
$main::opt_create_options =~ /type=heap/i) $main::opt_create_options =~ /engine=heap/i)
{ {
$limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's $limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
} }
if (defined($main::opt_create_options) && if (defined($main::opt_create_options) &&
$main::opt_create_options =~ /type=innodb/i) $main::opt_create_options =~ /engine=innodb/i)
{ {
$self->{'transactions'} = 1; # Transactions enabled $self->{'transactions'} = 1; # Transactions enabled
} }
if (defined($main::opt_create_options) && if (defined($main::opt_create_options) &&
$main::opt_create_options =~ /type=ndb/i) $main::opt_create_options =~ /engine=ndb/i)
{ {
$self->{'transactions'} = 1; # Transactions enabled $self->{'transactions'} = 1; # Transactions enabled
$limits{'max_columns'} = 90; # Max number of columns in table $limits{'max_columns'} = 90; # Max number of columns in table
$limits{'max_tables'} = 32; # No comments $limits{'max_tables'} = 32; # No comments
} }
if (defined($main::opt_create_options) && if (defined($main::opt_create_options) &&
$main::opt_create_options =~ /type=bdb/i) $main::opt_create_options =~ /engine=bdb/i)
{ {
$self->{'transactions'} = 1; # Transactions enabled $self->{'transactions'} = 1; # Transactions enabled
} }
if (defined($main::opt_create_options) && if (defined($main::opt_create_options) &&
$main::opt_create_options =~ /type=gemini/i) $main::opt_create_options =~ /engine=gemini/i)
{ {
$limits{'working_blobs'} = 0; # Blobs not implemented yet $limits{'working_blobs'} = 0; # Blobs not implemented yet
$limits{'max_tables'} = 500; $limits{'max_tables'} = 500;
......
...@@ -1589,6 +1589,7 @@ void end_thread(THD *thd, bool put_in_cache) ...@@ -1589,6 +1589,7 @@ void end_thread(THD *thd, bool put_in_cache)
wake_thread--; wake_thread--;
thd=thread_cache.get(); thd=thread_cache.get();
thd->real_id=pthread_self(); thd->real_id=pthread_self();
thd->thread_stack= (char*) &thd; // For store_globals
(void) thd->store_globals(); (void) thd->store_globals();
thd->thr_create_time= time(NULL); thd->thr_create_time= time(NULL);
threads.append(thd); threads.append(thd);
......
...@@ -1182,6 +1182,7 @@ end_thread: ...@@ -1182,6 +1182,7 @@ end_thread:
or this thread has been schedule to handle the next query or this thread has been schedule to handle the next query
*/ */
thd= current_thd; thd= current_thd;
thd->thread_stack= (char*) &thd;
} while (!(test_flags & TEST_NO_THREADS)); } while (!(test_flags & TEST_NO_THREADS));
/* The following is only executed if we are not using --one-thread */ /* The following is only executed if we are not using --one-thread */
return(0); /* purecov: deadcode */ return(0); /* purecov: deadcode */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment