[PATCH v4 5/5] dlls/kernelbase: handle corner case in CreateProcess

Eric Pouech eric.pouech at orange.fr
Wed Mar 16 02:13:19 CDT 2022


Le 15/03/2022 à 22:56, Jacek Caban a écrit :
> Hi Eric,
>
> On 2/21/22 08:34, Eric Pouech wrote:
>> diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
>> index 35381f409e9..1cecbce9321 100644
>> --- a/dlls/kernelbase/process.c
>> +++ b/dlls/kernelbase/process.c
>> @@ -191,7 +191,11 @@ static RTL_USER_PROCESS_PARAMETERS 
>> *create_process_params( const WCHAR *filename
>>         if (flags & CREATE_NEW_PROCESS_GROUP) params->ConsoleFlags = 1;
>>       if (flags & CREATE_NEW_CONSOLE) params->ConsoleHandle = 
>> CONSOLE_HANDLE_ALLOC;
>> -    else if (!(flags & DETACHED_PROCESS)) params->ConsoleHandle = 
>> NtCurrentTeb()->Peb->ProcessParameters->ConsoleHandle;
>> +    else if (!(flags & DETACHED_PROCESS))
>> +    {
>> +        params->ConsoleHandle = 
>> NtCurrentTeb()->Peb->ProcessParameters->ConsoleHandle;
>> +        if (!params->ConsoleHandle) params->ConsoleHandle = 
>> CONSOLE_HANDLE_ALLOC;
>> +    }
>>         if (startup->dwFlags & STARTF_USESTDHANDLES)
>>       {
>
>
> I'm still a bit concerned about inconsistency this will bring due to 
> how we conditionally use start.exe when Wine is launched by a Unix 
> process. To give you an example, assume that we're not attached to 
> Unix console and gcc.exe is a 32-bit console application accessible by 
> Windows PATH:
>
>
> # Wine will lunch gcc.exe directly, so it will not bring a new console 
> window; that's fine:
>
> wine path/to/gcc.exe
>
>
> # start.exe will case a new console window, because gcc needs to be 
> looked up:
>
> wine gcc
>
>
> # start.exe will cause a new window, because of 32/64 mismatch:
>
> wine64 path/to/gcc.exe
>
>
> Maybe we could set PEB console handle to some non-zero invalid value 
> when load_start_exe() is used. This would make it consistent, but 
> better ideas are welcomed ;)

one simple fix is to add DETACHED_PROCESS to creation_flags in start.exe 
when parsing /exec command line option and not being attached to a console

A+



More information about the wine-devel mailing list