Commit bca61bcf authored by unknown's avatar unknown
Browse files

Set thread_stack after return from end_thread()

Fixes core dump when reusing thread when running debug binary


sql-bench/bench-init.pl.sh:
  Use ENGINE= instead of TYPE=
sql-bench/server-cfg.sh:
  Use ENGINE= instead of TYPE=
sql/mysqld.cc:
  Set thread_stack (to avoid core dump in store_globlas)
sql/sql_parse.cc:
  Set thread_stack after return from end_thread()
parent 97bfd41f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -447,7 +447,7 @@ All benchmarks takes the following options:
--create-options=#
  Extra argument to all create statements.  If you for example want to
  create all MySQL tables as BDB tables use:
  --create-options=TYPE=BDB
  --create-options=ENGINE=BDB

--database (Default $opt_database)
  In which database the test tables are created.
+5 −5
Original line number Diff line number Diff line
@@ -174,29 +174,29 @@ sub new

  # Some fixes that depends on the environment
  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
  }
  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
  }
  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
    $limits{'max_columns'}	= 90;	# Max number of columns in table
    $limits{'max_tables'}	= 32;   # No comments
  }
  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
  }
  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{'max_tables'}	= 500;
+1 −0
Original line number Diff line number Diff line
@@ -1589,6 +1589,7 @@ void end_thread(THD *thd, bool put_in_cache)
      wake_thread--;
      thd=thread_cache.get();
      thd->real_id=pthread_self();
      thd->thread_stack= (char*) &thd;          // For store_globals
      (void) thd->store_globals();
      thd->thr_create_time= time(NULL);
      threads.append(thd);
+1 −0
Original line number Diff line number Diff line
@@ -1182,6 +1182,7 @@ pthread_handler_t handle_one_connection(void *arg)
      or this thread has been schedule to handle the next query
    */
    thd= current_thd;
    thd->thread_stack= (char*) &thd;
  } while (!(test_flags & TEST_NO_THREADS));
  /* The following is only executed if we are not using --one-thread */
  return(0);					/* purecov: deadcode */