Use SIGUSR1 instead of SIGSTOP to suspend threads.

diff --git a/scheduler/client.c b/scheduler/client.c
index ef6db59..466fef7 100644
--- a/scheduler/client.c
+++ b/scheduler/client.c
@@ -653,6 +653,8 @@
     sigaddset( &block_set, SIGIO );
     sigaddset( &block_set, SIGINT );
     sigaddset( &block_set, SIGHUP );
+    sigaddset( &block_set, SIGUSR1 );
+    sigaddset( &block_set, SIGUSR2 );
 
     /* receive the first thread request fd on the main socket */
     NtCurrentTeb()->request_fd = receive_fd( &dummy_handle );
diff --git a/scheduler/process.c b/scheduler/process.c
index 2d1eb95..ea9a305 100644
--- a/scheduler/process.c
+++ b/scheduler/process.c
@@ -508,6 +508,14 @@
     console_app = (nt->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI);
     if (console_app) current_process.flags |= PDB32_CONSOLE_PROC;
 
+    /* Install signal handlers; this cannot be done before, since we cannot
+     * send exceptions to the debugger before the create process event that
+     * is sent by REQ_INIT_PROCESS_DONE.
+     * We do need the handlers in place by the time the request is over, so
+     * we set them up here. If we segfault between here and the server call
+     * something is very wrong... */
+    if (!SIGNAL_Init()) goto error;
+
     /* Signal the parent process to continue */
     SERVER_START_REQ( init_process_done )
     {
@@ -524,11 +532,6 @@
     }
     SERVER_END_REQ;
 
-    /* Install signal handlers; this cannot be done before, since we cannot
-     * send exceptions to the debugger before the create process event that
-     * is sent by REQ_INIT_PROCESS_DONE */
-    if (!SIGNAL_Init()) goto error;
-
     /* create the main modref and load dependencies */
     if (!(wm = PE_CreateModule( current_process.module, main_exe_name, 0, 0, FALSE )))
         goto error;