summaryrefslogtreecommitdiff
path: root/sql/signal_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/signal_handler.cc')
-rw-r--r--sql/signal_handler.cc42
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 "