8206145 : dbgsysSocketClose - do not restart close if errno is EINTR [linux] - was : RE: RFR : 8205959 : Do not restart close if errno is EINTR

David Holmes david.holmes at oracle.com
Tue Jul 3 21:26:13 UTC 2018


On 4/07/2018 3:14 AM, Alan Bateman wrote:
> On 03/07/2018 18:07, Thomas Stüfe wrote:
>> :
>> Actually, at this point we could just:
>>
>> #if defined(__AIX)
>>       do {
>>           rv = close(fd);
>>       } while (rv == -1 && errno == EINTR);
>> #else
>>      rv = close(fd);
>> #endif
> Right, might be the simplest.

+1 with suitable comment

>>
>> But boy this close() EINTR business is evil. Choosing between risking
>> file descriptor leaks or random double closes ...

Hopefully it's somewhat academic and we don't actually take signals in 
arbitrary threads.

Cheers,
David

>>
> and we aren't out of the woods yet, there are a few other places that 
> need similar attention.


More information about the serviceability-dev mailing list