Module: wine
Branch: master
Commit: 82b0bb3c2468ad7f00386cbcbd94f2ba9c21c024
URL: https://gitlab.winehq.org/wine/wine/-/commit/82b0bb3c2468ad7f00386cbcbd94f2…
Author: Eric Pouech <epouech(a)codeweavers.com>
Date: Wed Aug 23 12:24:17 2023 +0200
server: Separate console and new group flag (CreateProcess).
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: Eric Pouech <epouech(a)codeweavers.com>
---
dlls/kernel32/tests/console.c | 8 ++++----
dlls/kernelbase/process.c | 6 +++++-
dlls/ntdll/env.c | 1 +
dlls/ntdll/unix/env.c | 4 ++++
dlls/ntdll/unix/process.c | 4 ++--
include/wine/server_protocol.h | 3 ++-
server/process.c | 5 ++++-
server/protocol.def | 1 +
server/request.h | 2 +-
server/trace.c | 5 +++--
tools/make_requests | 2 +-
11 files changed, 28 insertions(+), 13 deletions(-)