Module: wine Branch: master Commit: bd31e320ddbeddd7d6948839fb5db786b0659b8b URL: http://source.winehq.org/git/wine.git/?a=commit;h=bd31e320ddbeddd7d6948839fb... Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Thu Sep 1 21:44:24 2016 +0200 schedsvc: Avoid deadlock when scheduler service starts rpcss. Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/schedsvc/svc_main.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dlls/schedsvc/svc_main.c b/dlls/schedsvc/svc_main.c index b559311..45496c9 100644 --- a/dlls/schedsvc/svc_main.c +++ b/dlls/schedsvc/svc_main.c @@ -175,8 +175,6 @@ void WINAPI ServiceMain(DWORD argc, LPWSTR *argv) { TRACE("starting Task Scheduler Service\n"); - if (RPC_init() != RPC_S_OK) return; - schedsvc_handle = RegisterServiceCtrlHandlerW(scheduleW, schedsvc_handler); if (!schedsvc_handle) { @@ -186,11 +184,15 @@ void WINAPI ServiceMain(DWORD argc, LPWSTR *argv) done_event = CreateEventW(NULL, TRUE, FALSE, NULL); - schedsvc_update_status(SERVICE_RUNNING); + schedsvc_update_status(SERVICE_START_PENDING); - WaitForSingleObject(done_event, INFINITE); + if (RPC_init() == RPC_S_OK) + { + schedsvc_update_status(SERVICE_RUNNING); + WaitForSingleObject(done_event, INFINITE); + RPC_finish(); + } - RPC_finish(); schedsvc_update_status(SERVICE_STOPPED); TRACE("exiting Task Scheduler Service\n");