mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Generate core file on Solaris.
This commit is contained in:
@ -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
|
|||||||
@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.
|
|||||||
@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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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
|
||||||
|
Reference in New Issue
Block a user