• Eric Pouech's avatar
    server: Separate console and new group flag (CreateProcess). · 82b0bb3c
    Eric Pouech authored
    We were using bit 1 of RTL_USER_PROCESS_PARAMETERS for two different cases:
    - rightfully, as a sign to block ctrl-c events from being processed by
      handlers (and by default, terminating the process)
    - But this was also used to request for the creation of a new process group.
    
    This patch properly separates the two use cases, by using the
    ProcessGroupId field in RTL_USER_PROCESS_PARAMETERS (checked that Win10
    behaves as this patch in RtlCreateUserProcess wrt.
    RTL_USER_PROCESS_PARAMETERS ProcessGroupId usage input/output).
    
    Introduce process_group_id in startup_info_t and use it to pass it to
    server. ProcessGroupId field in RTL_USER_PROCESS_PARAMETERS is now properly
    set.
    
    Note: this will change some external behavior.
    - before this patch, a child process created with Ctrl-C disabled
      (ConsoleFlags set), couldn't turn it on as the process was detached
      from unix console.
    - now, SIGINT handling is moved to kernelbase (and can be turned on/off at
      application will),
    - when creating a new windows group id, the child will be detached from
      unix console, so will no longer receives the SIGINT from ctrl-c in unix
      console (if parent was attached to this unix console).
    Signed-off-by: 's avatarEric Pouech <epouech@codeweavers.com>
    82b0bb3c
process.c 63.8 KB