Rebase against cfbbde2abce1eedc7f53db3f8af8078fe4a11cac.

This commit is contained in:
Alistair Leslie-Hughes
2021-02-02 10:51:17 +11:00
parent f6dacd2f9a
commit a6054cf2e9
10 changed files with 61 additions and 249 deletions

View File

@@ -1,4 +1,4 @@
From d05ac476a0ca682ecb7ae13aa9e578c94b71e3f8 Mon Sep 17 00:00:00 2001
From f649ffcd8f68f82be173367b66f3c505ff75bcc3 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 12 Nov 2018 18:10:32 +0200
Subject: [PATCH] server: Do not signal violently terminated threads until they
@@ -27,10 +27,10 @@ Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/server/thread.c b/server/thread.c
index 9b14174578e..2f32cb4b62e 100644
index 55386192fe6..60cd4ee16a8 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -239,6 +239,7 @@ static inline void init_thread_structure( struct thread *thread )
@@ -241,6 +241,7 @@ static inline void init_thread_structure( struct thread *thread )
thread->token = NULL;
thread->desc = NULL;
thread->desc_len = 0;
@@ -38,7 +38,7 @@ index 9b14174578e..2f32cb4b62e 100644
thread->creation_time = current_time;
thread->exit_time = 0;
@@ -430,6 +431,7 @@ static void destroy_thread( struct object *obj )
@@ -431,6 +432,7 @@ static void destroy_thread( struct object *obj )
list_remove( &thread->entry );
cleanup_thread( thread );
release_object( thread->process );
@@ -46,7 +46,7 @@ index 9b14174578e..2f32cb4b62e 100644
if (thread->id) free_ptid( thread->id );
if (thread->token) release_object( thread->token );
}
@@ -454,7 +456,7 @@ static struct object_type *thread_get_type( struct object *obj )
@@ -455,7 +457,7 @@ static struct object_type *thread_get_type( struct object *obj )
static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
{
struct thread *mythread = (struct thread *)obj;
@@ -55,7 +55,7 @@ index 9b14174578e..2f32cb4b62e 100644
}
static unsigned int thread_map_access( struct object *obj, unsigned int access )
@@ -1245,6 +1247,26 @@ int thread_get_inflight_fd( struct thread *thread, int client )
@@ -1249,6 +1251,26 @@ int thread_get_inflight_fd( struct thread *thread, int client )
return -1;
}
@@ -82,9 +82,9 @@ index 9b14174578e..2f32cb4b62e 100644
/* kill a thread on the spot */
void kill_thread( struct thread *thread, int violent_death )
{
@@ -1265,8 +1287,12 @@ void kill_thread( struct thread *thread, int violent_death )
@@ -1268,8 +1290,12 @@ void kill_thread( struct thread *thread, int violent_death )
}
kill_console_processes( thread, 0 );
debug_exit_thread( thread );
abandon_mutexes( thread );
- wake_up( &thread->obj, 0 );
- if (violent_death) send_thread_signal( thread, SIGQUIT );
@@ -98,10 +98,10 @@ index 9b14174578e..2f32cb4b62e 100644
remove_process_thread( thread->process, thread );
release_object( thread );
diff --git a/server/thread.h b/server/thread.h
index 650bc44628d..668cc4ebd79 100644
index 184fa92d250..077ab0929ba 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -91,6 +91,7 @@ struct thread
@@ -90,6 +90,7 @@ struct thread
struct list kernel_object; /* list of kernel object pointers */
data_size_t desc_len; /* thread description length in bytes */
WCHAR *desc; /* thread description string */
@@ -110,5 +110,5 @@ index 650bc44628d..668cc4ebd79 100644
extern struct thread *current;
--
2.27.0
2.29.2