Commit 3b244b95 authored by Alexandre Julliard's avatar Alexandre Julliard

server: Use SIGQUIT instead of SIGTERM to terminate a thread.

This allows keeping the default SIGTERM behavior of killing the whole process.
parent e2a366ce
......@@ -1289,11 +1289,11 @@ static void abrt_handler( int signal, siginfo_t *siginfo, void *sigcontext )
/**********************************************************************
* term_handler
* quit_handler
*
* Handler for SIGTERM.
* Handler for SIGQUIT.
*/
static void term_handler( int signal, siginfo_t *siginfo, void *sigcontext )
static void quit_handler( int signal, siginfo_t *siginfo, void *sigcontext )
{
WORD fs, gs;
init_handler( sigcontext, &fs, &gs );
......@@ -1392,8 +1392,8 @@ BOOL SIGNAL_Init(void)
if (sigaction( SIGFPE, &sig_act, NULL ) == -1) goto error;
sig_act.sa_sigaction = abrt_handler;
if (sigaction( SIGABRT, &sig_act, NULL ) == -1) goto error;
sig_act.sa_sigaction = term_handler;
if (sigaction( SIGTERM, &sig_act, NULL ) == -1) goto error;
sig_act.sa_sigaction = quit_handler;
if (sigaction( SIGQUIT, &sig_act, NULL ) == -1) goto error;
sig_act.sa_sigaction = usr1_handler;
if (sigaction( SIGUSR1, &sig_act, NULL ) == -1) goto error;
......
......@@ -581,11 +581,11 @@ static HANDLER_DEF(abrt_handler)
/**********************************************************************
* term_handler
* quit_handler
*
* Handler for SIGTERM.
* Handler for SIGQUIT.
*/
static HANDLER_DEF(term_handler)
static HANDLER_DEF(quit_handler)
{
server_abort_thread(0);
}
......@@ -657,7 +657,7 @@ BOOL SIGNAL_Init(void)
if (set_handler( SIGSEGV, (void (*)())segv_handler ) == -1) goto error;
if (set_handler( SIGILL, (void (*)())segv_handler ) == -1) goto error;
if (set_handler( SIGABRT, (void (*)())abrt_handler ) == -1) goto error;
if (set_handler( SIGTERM, (void (*)())term_handler ) == -1) goto error;
if (set_handler( SIGQUIT, (void (*)())quit_handler ) == -1) goto error;
if (set_handler( SIGUSR1, (void (*)())usr1_handler ) == -1) goto error;
#ifdef SIGBUS
if (set_handler( SIGBUS, (void (*)())segv_handler ) == -1) goto error;
......
......@@ -389,11 +389,11 @@ static HANDLER_DEF(abrt_handler)
/**********************************************************************
* term_handler
* quit_handler
*
* Handler for SIGTERM.
* Handler for SIGQUIT.
*/
static HANDLER_DEF(term_handler)
static HANDLER_DEF(quit_handler)
{
server_abort_thread(0);
}
......@@ -468,7 +468,7 @@ BOOL SIGNAL_Init(void)
if (set_handler( SIGBUS, (void (*)())bus_handler ) == -1) goto error;
if (set_handler( SIGTRAP, (void (*)())trap_handler ) == -1) goto error;
if (set_handler( SIGABRT, (void (*)())abrt_handler ) == -1) goto error;
if (set_handler( SIGTERM, (void (*)())term_handler ) == -1) goto error;
if (set_handler( SIGQUIT, (void (*)())quit_handler ) == -1) goto error;
if (set_handler( SIGUSR1, (void (*)())usr1_handler ) == -1) goto error;
/* 'ta 6' tells the kernel to synthesize any unaligned accesses this
process makes, instead of just signalling an error and terminating
......
......@@ -414,11 +414,11 @@ static HANDLER_DEF(abrt_handler)
/**********************************************************************
* term_handler
* quit_handler
*
* Handler for SIGTERM.
* Handler for SIGQUIT.
*/
static HANDLER_DEF(term_handler)
static HANDLER_DEF(quit_handler)
{
server_abort_thread(0);
}
......@@ -490,7 +490,7 @@ BOOL SIGNAL_Init(void)
if (set_handler( SIGSEGV, (void (*)())segv_handler ) == -1) goto error;
if (set_handler( SIGILL, (void (*)())segv_handler ) == -1) goto error;
if (set_handler( SIGABRT, (void (*)())abrt_handler ) == -1) goto error;
if (set_handler( SIGTERM, (void (*)())term_handler ) == -1) goto error;
if (set_handler( SIGQUIT, (void (*)())quit_handler ) == -1) goto error;
if (set_handler( SIGUSR1, (void (*)())usr1_handler ) == -1) goto error;
#ifdef SIGBUS
if (set_handler( SIGBUS, (void (*)())segv_handler ) == -1) goto error;
......
......@@ -920,14 +920,14 @@ void kill_thread( struct thread *thread, int violent_death )
{
while (thread->wait) end_wait( thread );
send_thread_wakeup( thread, NULL, STATUS_PENDING );
/* if it is waiting on the socket, we don't need to send a SIGTERM */
/* if it is waiting on the socket, we don't need to send a SIGQUIT */
violent_death = 0;
}
kill_console_processes( thread, 0 );
debug_exit_thread( thread );
abandon_mutexes( thread );
wake_up( &thread->obj, 0 );
if (violent_death) send_thread_signal( thread, SIGTERM );
if (violent_death) send_thread_signal( thread, SIGQUIT );
cleanup_thread( thread );
remove_process_thread( thread->process, thread );
release_object( thread );
......
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