From: Giannis Adamopoulos Date: Sun, 25 Nov 2018 18:13:56 +0000 (+0200) Subject: [WINSRV] Wait for the process to exit after calling NtTerminateProcess X-Git-Tag: 0.4.12-dev~94 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=225c5c4a20aa16b1e068eda6e426def38871687a;hp=6d6e3712259e06cc49b753447a8bdfe49a4eabc4 [WINSRV] Wait for the process to exit after calling NtTerminateProcess NtTerminateProcess just queues an apc in every thread of the target process which in turn kills each thread. We need to wait so that all processes have enough time to exit before shutting down. --- diff --git a/win32ss/user/winsrv/usersrv/shutdown.c b/win32ss/user/winsrv/usersrv/shutdown.c index 5c2f464f846..7238b21ab80 100644 --- a/win32ss/user/winsrv/usersrv/shutdown.c +++ b/win32ss/user/winsrv/usersrv/shutdown.c @@ -796,6 +796,8 @@ UserClientShutdown(IN PCSR_PROCESS CsrProcess, #endif NtTerminateProcess(CsrProcess->ProcessHandle, 0); + WaitForSingleObject(CsrProcess->ProcessHandle, ShutdownSettings.ProcessTerminateTimeout); + /* We are done */ CsrDereferenceProcess(CsrProcess); return CsrShutdownCsrProcess;