Piotr Caban : server: Fix process trace_data initialization race on Mac.
Alexandre Julliard
julliard at winehq.org
Tue Jan 8 17:46:48 CST 2019
Module: wine
Branch: master
Commit: 9fa65a8751f36eea57d52717c9f8df2c27924458
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9fa65a8751f36eea57d52717c9f8df2c27924458
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Jan 8 16:12:27 2019 +0100
server: Fix process trace_data initialization race on Mac.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/server.c | 7 ++++---
server/process.c | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 38356f4..094b530 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -1419,9 +1419,6 @@ void server_init_process(void)
"Or maybe the wrong wineserver is still running?\n",
version, SERVER_PROTOCOL_VERSION,
(version > SERVER_PROTOCOL_VERSION) ? "wine" : "wineserver" );
-#ifdef __APPLE__
- send_server_task_port();
-#endif
#if defined(__linux__) && defined(HAVE_PRCTL)
/* work around Ubuntu's ptrace breakage */
if (server_pid != -1) prctl( 0x59616d61 /* PR_SET_PTRACER */, server_pid );
@@ -1440,6 +1437,10 @@ void server_init_process_done(void)
NTSTATUS status;
int suspend;
+#ifdef __APPLE__
+ send_server_task_port();
+#endif
+
/* Install signal handlers; this cannot be done earlier, since we cannot
* send exceptions to the debugger before the create process event that
* is sent by REQ_INIT_PROCESS_DONE.
diff --git a/server/process.c b/server/process.c
index 3bd545a..e55c8a8 100644
--- a/server/process.c
+++ b/server/process.c
@@ -587,7 +587,6 @@ data_size_t init_process( struct thread *thread )
struct process *process = thread->process;
struct startup_info *info = process->startup_info;
- init_process_tracing( process );
if (!info) return 0;
return info->data_size;
}
@@ -1319,6 +1318,7 @@ DECL_HANDLER(init_process_done)
if (process->exe_file) release_object( process->exe_file );
process->exe_file = NULL;
+ init_process_tracing( process );
generate_startup_debug_events( process, req->entry );
set_process_startup_state( process, STARTUP_DONE );
More information about the wine-cvs
mailing list