diff options
Diffstat (limited to 'sql/signal_handler.cc')
-rw-r--r-- | sql/signal_handler.cc | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/sql/signal_handler.cc b/sql/signal_handler.cc index 66cf240f695..37f28844a7c 100644 --- a/sql/signal_handler.cc +++ b/sql/signal_handler.cc @@ -17,7 +17,10 @@ #include "my_global.h" #include <signal.h> -#include "mysql_priv.h" +//#include "sys_vars.h" +#include <keycache.h> +#include "mysqld.h" +#include "sql_class.h" #include "my_stacktrace.h" #ifdef __WIN__ @@ -39,6 +42,8 @@ extern volatile sig_atomic_t calling_initgroups; extern volatile sig_atomic_t ld_assume_kernel_is_set; #endif +extern const char *optimizer_switch_names[]; + /** * Handler for fatal signals on POSIX, exception handler on Windows. * @@ -104,6 +109,7 @@ extern "C" sig_handler handle_fatal_signal(int sig) set_server_version(); my_safe_printf_stderr("Server version: %s\n", server_version); + my_safe_printf_stderr("key_buffer_size=%lu\n", (ulong) dflt_key_cache->key_cache_mem_size); @@ -114,21 +120,20 @@ extern "C" sig_handler handle_fatal_signal(int sig) (ulong) max_used_connections); my_safe_printf_stderr("max_threads=%u\n", - (uint) thread_scheduler.max_threads); + (uint) thread_scheduler->max_threads + + (uint) extra_max_connections); my_safe_printf_stderr("thread_count=%u\n", (uint) thread_count); - my_safe_printf_stderr("connection_count=%u\n", (uint) connection_count); - my_safe_printf_stderr("It is possible that mysqld could use up to \n" "key_buffer_size + " "(read_buffer_size + sort_buffer_size)*max_threads = " "%lu K bytes of memory\n", - ((ulong) dflt_key_cache->key_cache_mem_size + + (ulong)(dflt_key_cache->key_cache_mem_size + (global_system_variables.read_buff_size + global_system_variables.sortbuff_size) * - thread_scheduler.max_threads + - max_connections * sizeof(THD)) / 1024); + (thread_scheduler->max_threads + extra_max_connections) + + (max_connections + extra_max_connections)* sizeof(THD)) / 1024); my_safe_printf_stderr("%s", "Hope that's ok; if not, decrease some variables in the equation.\n\n"); @@ -162,7 +167,7 @@ extern "C" sig_handler handle_fatal_signal(int sig) "where mysqld died. If you see no messages after this, something went\n" "terribly wrong...\n"); my_print_stacktrace(thd ? (uchar*) thd->thread_stack : NULL, - my_thread_stack_size); + (ulong)my_thread_stack_size); } if (thd) { @@ -192,29 +197,30 @@ extern "C" sig_handler handle_fatal_signal(int sig) case KILL_SERVER_HARD: kreason= "KILL_SERVER"; break; + case ABORT_QUERY: + case ABORT_QUERY_HARD: + kreason= "ABORT_QUERY"; + break; } my_safe_printf_stderr("%s", "\n" "Trying to get some variables.\n" "Some pointers may be invalid and cause the dump to abort.\n"); my_safe_printf_stderr("Query (%p): ", thd->query()); - my_safe_print_str(thd->query(), min(65535, thd->query_length())); - my_safe_printf_stderr("Connection ID (thread ID): %lu\n", + my_safe_print_str(thd->query(), min(65536U, thd->query_length())); + my_safe_printf_stderr("\nConnection ID (thread ID): %lu\n", (ulong) thd->thread_id); - my_safe_printf_stderr("Status: %s\n", kreason); - + my_safe_printf_stderr("Status: %s\n\n", kreason); + my_safe_printf_stderr("%s", "Optimizer switch: "); ulonglong optsw= thd->variables.optimizer_switch; - const char **optimizer_switch_names= optimizer_switch_typelib.type_names; - my_safe_printf_stderr("Optimizer switch: "); for (uint i= 0; optimizer_switch_names[i+1]; i++, optsw >>= 1) { if (i) - my_safe_printf_stderr(","); + my_safe_printf_stderr("%s", ","); my_safe_printf_stderr("%s=%s", - optimizer_switch_names[i], - optsw & 1 ? "on" : "off"); + optimizer_switch_names[i], optsw & 1 ? "on" : "off"); } - my_safe_printf_stderr("\n\n"); + my_safe_printf_stderr("%s", "\n\n"); } my_safe_printf_stderr("%s", "The manual page at " |