From 13bb213aeb65b657a57adbf486ddb73da78dffbc Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Wed, 17 Aug 2016 09:36:59 +0200 Subject: [PATCH] advapi32: Hold lock while handling service thread shutdown. Signed-off-by: Sebastian Lackner Signed-off-by: Alexandre Julliard --- dlls/advapi32/service.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 11186c56c46..d6bd14cc953 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -625,8 +625,11 @@ static BOOL service_run_main_thread(void) } else if (ret < n) { - services[wait_services[ret]]->thread = 0; - CloseHandle( wait_handles[ret] ); + i = wait_services[ret]; + EnterCriticalSection( &service_cs ); + CloseHandle( services[i]->thread ); + services[i]->thread = NULL; + LeaveCriticalSection( &service_cs ); } else return FALSE; }