[PATCH 2/2] server: Prevent polling on shutdown fd

Roman Pišl rpisl at seznam.cz
Fri Jul 9 13:13:25 CDT 2021


Dne 05. 07. 21 v 21:54 Zebediah Figura (she/her) napsal(a):
> On 7/2/21 1:06 PM, David Koolhoven wrote:
>> Make sure we're not going to poll on connectionless file descriptors
>> which have received shutdown signals on their read and write ends.
>>
>> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51319
>> Signed-off-by: David Koolhoven <david at koolhoven-home.net>
>> ---
>>   server/sock.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/server/sock.c b/server/sock.c
>> index ce2f390ec05..ecf10441c2b 100644
>> --- a/server/sock.c
>> +++ b/server/sock.c
>> @@ -1197,6 +1197,10 @@ static int sock_get_poll_events( struct fd *fd )
>>           {
>>               ev |= POLLOUT;
>>           }
>> +        if (sock->rd_shutdown && sock->wr_shutdown && ev == 0)
>> +        {
>> +            ev = -1;
>> +        }
>>           break;
>>       }
>>
> 
> This seems reasonable to me, but I feel like it deserves a comment—in 
> the code, rather than in the commit message—that describes why we need 
> to do this. See the comment for the SOCK_UNCONNECTED case above.
> 

Hi, I'm facing a regression of a networking application with the same 
symptoms (wineserver at 100%). There is a little progress only if both 
these patches are applied but 100% peaks can still be observed at times 
(which are not with Wine 6.0.1) and the application still suffers from 
some errors. It seems to me that there is a deeper problem.



More information about the wine-devel mailing list