mirror of
https://github.com/tmate-io/tmate-ssh-server.git
synced 2020-11-18 19:53:51 -08:00
Server logs stack trace on SIGSEGV
This commit is contained in:
parent
bc72493b91
commit
04dfad47a8
@ -23,6 +23,7 @@ endif
|
||||
|
||||
CFLAGS += -Wno-unused-parameter -Wno-unused-variable
|
||||
CFLAGS += -Ilibssh/include/ -Imsgpack/src
|
||||
CFLAGS += -rdynamic # for stack traces
|
||||
|
||||
if IS_DEVENV
|
||||
CFLAGS += -DDEVENV
|
||||
|
@ -73,3 +73,9 @@ void tmate_print_trace(void)
|
||||
|
||||
free(strings);
|
||||
}
|
||||
|
||||
void tmate_preload_trace_lib(void)
|
||||
{
|
||||
void *array[0];
|
||||
backtrace(array, 0);
|
||||
}
|
||||
|
@ -61,6 +61,8 @@ int main(int argc, char **argv)
|
||||
(mkdir(TMATE_WORKDIR "/jail", 0700) < 0 && errno != EEXIST))
|
||||
tmate_fatal("Cannot prepare session in " TMATE_WORKDIR);
|
||||
|
||||
tmate_preload_trace_lib();
|
||||
|
||||
tmate_ssh_server_main(port);
|
||||
return 0;
|
||||
}
|
||||
|
@ -189,11 +189,18 @@ static void handle_sigalrm(void)
|
||||
tmate_fatal("Connection grace period (%d) passed", SSH_GRACE_PERIOD);
|
||||
}
|
||||
|
||||
static void handle_sigsegv(void)
|
||||
{
|
||||
tmate_print_trace();
|
||||
tmate_fatal("CRASH");
|
||||
}
|
||||
|
||||
static void signal_handler(int sig)
|
||||
{
|
||||
switch (sig) {
|
||||
case SIGCHLD: handle_sigchld(); break;
|
||||
case SIGALRM: handle_sigalrm(); break;
|
||||
case SIGSEGV: handle_sigsegv(); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -201,6 +208,7 @@ static void setup_signals(void)
|
||||
{
|
||||
signal(SIGCHLD, signal_handler);
|
||||
signal(SIGALRM, signal_handler);
|
||||
signal(SIGSEGV, signal_handler);
|
||||
}
|
||||
|
||||
static void ssh_log_cb(ssh_session session, int priority,
|
||||
|
Loading…
x
Reference in New Issue
Block a user