Commit 17380214 authored by Alexey Botchkov's avatar Alexey Botchkov

Bug#43733 Select on processlist let the embedded server crash (concurrent_innodb_safelog)

    the thread->mysys_var parameter should be empty for the idle
    embedded-server threads so that working threads can safely free
    this memory.

per-file comments:
  libmysqld/lib_sql.cc
Bug#43733      Select on processlist let the embedded server crash (concurrent_innodb_safelog)
    set thread->mysys_var= 0 after the query is handled

  mysql-test/include/concurrent.inc
Bug#43733      Select on processlist let the embedded server crash (concurrent_innodb_safelog)
    enable these for the embedded-server mode

  sql/sql_show.cc
Bug#43733      Select on processlist let the embedded server crash (concurrent_innodb_safelog)
    show thread lock status in the query result
parent 744373ec
...@@ -142,6 +142,8 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command, ...@@ -142,6 +142,8 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
if (!skip_check) if (!skip_check)
result= thd->is_error() ? -1 : 0; result= thd->is_error() ? -1 : 0;
thd->mysys_var= 0;
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER) #if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
thd->profiling.finish_current_query(); thd->profiling.finish_current_query();
#endif #endif
...@@ -634,6 +636,7 @@ void *create_embedded_thd(int client_flag) ...@@ -634,6 +636,7 @@ void *create_embedded_thd(int client_flag)
thread_count++; thread_count++;
threads.append(thd); threads.append(thd);
thd->mysys_var= 0;
return thd; return thd;
err: err:
delete(thd); delete(thd);
......
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
# new wrapper t/concurrent_innodb_safelog.test # new wrapper t/concurrent_innodb_safelog.test
# #
--source include/not_embedded.inc
connection default; connection default;
# #
# Show prerequisites for this test. # Show prerequisites for this test.
......
...@@ -1888,7 +1888,7 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond) ...@@ -1888,7 +1888,7 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
tmp->mysys_var->current_cond ? tmp->mysys_var->current_cond ?
"Waiting on cond" : NullS); "Waiting on cond" : NullS);
#else #else
val= (char *) "Writing to net"; val= (char *) (tmp->proc_info ? tmp->proc_info : NullS);
#endif #endif
if (val) if (val)
{ {
......
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