[PATCH v4 2/2] server: Add USD support with timestamp updates.
Rémi Bernon
rbernon at codeweavers.com
Mon May 4 11:19:41 CDT 2020
On 5/4/20 5:49 PM, Alexandre Julliard wrote:
> Rémi Bernon <rbernon at codeweavers.com> writes:
>
>> @@ -1533,6 +1541,7 @@ void server_init_process_done(void)
>> signal_init_process();
>>
>> /* Signal the parent process to continue */
>> + pthread_sigmask( SIG_BLOCK, &server_block_set, &old_set );
>> SERVER_START_REQ( init_process_done )
>> {
>> req->module = wine_server_client_ptr( peb->ImageBaseAddress );
>> @@ -1541,10 +1550,22 @@ void server_init_process_done(void)
>> #endif
>> req->entry = wine_server_client_ptr( entry );
>> req->gui = (nt->OptionalHeader.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_CUI);
>> - status = wine_server_call( req );
>> + wine_server_add_data( req, user_shared_data, sizeof(*user_shared_data) );
>> + status = server_call_unlocked( req );
>> suspend = reply->suspend;
>> }
>> SERVER_END_REQ;
>> + if (!status) usd_fd = receive_fd( &usd_handle );
>> + pthread_sigmask( SIG_SETMASK, &old_set, NULL );
>
> It should be possible to use standard file mapping functions
> (NtOpenSection, NtMapViewOfSection etc.) instead of adding custom
> handling to the init_process_done request.
>
Well, there was actually an issue with the service implementation
because it used standard section function to map the USD. The handle was
allocated early and under some circumstances could collide with a
console handle copied from a parent process. The details are a bit
convoluted but it's also the reason behind Paul's recent mapping patches.
With these patches, NtWriteFile should not be able to write to the
section handle anymore, but the idea was also that maybe the USD should
not use standard mapping functions to avoid such issues. Also, on
Windows NtQueryVirtualMemory returns MEM_PRIVATE for the USD, where it
would return MEM_MAPPED if a section is used (although unlikely that any
application cares).
--
Rémi Bernon <rbernon at codeweavers.com>
More information about the wine-devel
mailing list