Commit 0afe57ba authored by unknown's avatar unknown

Generate core file on Solaris.


Docs/manual.texi:
  ChangeLog
sql/mysqld.cc:
  Cleanup
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parent b2cec26d
...@@ -7,3 +7,4 @@ sasha@mysql.sashanet.com ...@@ -7,3 +7,4 @@ sasha@mysql.sashanet.com
heikki@donna.mysql.fi heikki@donna.mysql.fi
miguel@light.local miguel@light.local
monty@donna.mysql.fi monty@donna.mysql.fi
monty@bitch.mysql.fi
...@@ -9880,12 +9880,6 @@ that you also probably need to raise the @code{core file size} by adding ...@@ -9880,12 +9880,6 @@ that you also probably need to raise the @code{core file size} by adding
@code{ulimit -c 1000000} to @code{safe_mysqld} or starting @code{safe_mysqld} @code{ulimit -c 1000000} to @code{safe_mysqld} or starting @code{safe_mysqld}
with @code{--core-file-sizes=1000000}. @xref{safe_mysqld, , @code{safe_mysqld}}. with @code{--core-file-sizes=1000000}. @xref{safe_mysqld, , @code{safe_mysqld}}.
To get a core dump on Linux if @code{mysqld} dies with a SIGSEGV signal, you can
start @code{mysqld} with the @code{--core-file} option. Note that you also probably
need to raise the @code{core file size} by adding @code{ulimit -c 1000000} to
@code{safe_mysqld} or starting @code{safe_mysqld} with
@code{--core-file-sizes=1000000}. @xref{safe_mysqld, , @code{safe_mysqld}}.
If you are linking your own MySQL client and get the error: If you are linking your own MySQL client and get the error:
@example @example
...@@ -46844,6 +46838,8 @@ not yet 100% confident in this code. ...@@ -46844,6 +46838,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.45 @appendixsubsec Changes in release 3.23.45
@itemize @bullet @itemize @bullet
@item @item
@code{--core-file} now works on Solaris.
@item
Fixed bug with BDB tables and keys on @code{BLOB}'s. Fixed bug with BDB tables and keys on @code{BLOB}'s.
@item @item
Fixed bug in @code{MERGE} tables on OS with 32 bit file pointers. Fixed bug in @code{MERGE} tables on OS with 32 bit file pointers.
...@@ -1119,6 +1119,19 @@ static void start_signal_handler(void) ...@@ -1119,6 +1119,19 @@ static void start_signal_handler(void)
} }
#elif defined(__EMX__) #elif defined(__EMX__)
static void init_signals(void)
{
signal(SIGQUIT, sig_kill);
signal(SIGKILL, sig_kill);
signal(SIGTERM, sig_kill);
signal(SIGINT, sig_kill);
signal(SIGHUP, sig_reload); // Flush everything
signal(SIGALRM, SIG_IGN);
signal(SIGBREAK,SIG_IGN);
signal_thread = pthread_self();
}
static void sig_reload(int signo) static void sig_reload(int signo)
{ {
reload_acl_and_cache((THD*) 0,REFRESH_LOG, (TABLE_LIST*) 0); // Flush everything reload_acl_and_cache((THD*) 0,REFRESH_LOG, (TABLE_LIST*) 0); // Flush everything
...@@ -1135,22 +1148,10 @@ static void sig_kill(int signo) ...@@ -1135,22 +1148,10 @@ static void sig_kill(int signo)
signal(signo, SIG_ACK); signal(signo, SIG_ACK);
} }
static void init_signals(void)
{
signal(SIGQUIT, sig_kill);
signal(SIGKILL, sig_kill);
signal(SIGTERM, sig_kill);
signal(SIGINT, sig_kill);
signal(SIGHUP, sig_reload); // Flush everything
signal(SIGALRM, SIG_IGN);
signal(SIGBREAK,SIG_IGN);
signal_thread = pthread_self();
}
static void start_signal_handler(void) static void start_signal_handler(void)
{ {
} }
#else /* if ! __WIN__ && ! __EMX__ */ #else /* if ! __WIN__ && ! __EMX__ */
#ifdef HAVE_LINUXTHREADS #ifdef HAVE_LINUXTHREADS
...@@ -1160,10 +1161,12 @@ static void start_signal_handler(void) ...@@ -1160,10 +1161,12 @@ static void start_signal_handler(void)
static sig_handler handle_segfault(int sig) static sig_handler handle_segfault(int sig)
{ {
THD *thd=current_thd; THD *thd=current_thd;
// strictly speaking, one needs a mutex here /*
// but since we have got SIGSEGV already, things are a mess Strictly speaking, we should need a mutex here
// so not having the mutex is not as bad as possibly using a buggy but since we have got SIGSEGV already, things are a mess
// mutex - so we keep things simple so not having the mutex is not as bad as possibly using a buggy
mutex - so we keep things simple.
*/
if (segfaulted) if (segfaulted)
{ {
fprintf(stderr, "Fatal signal %d while backtracing\n", sig); fprintf(stderr, "Fatal signal %d while backtracing\n", sig);
......
...@@ -218,5 +218,7 @@ void write_core(int sig) ...@@ -218,5 +218,7 @@ void write_core(int sig)
{ {
signal(sig, SIG_DFL); signal(sig, SIG_DFL);
pthread_kill(pthread_self(), sig); pthread_kill(pthread_self(), sig);
/* On Solaris, the above kill is not enough */
sigsend(P_PID,P_MYID,sig);
} }
#endif #endif
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