Subject: Re: bug#3225: session manager hang due to block on ice_fd (failure to check for EINTR in select)

From: "Jan D." <[email-masked]>
Date: Thu, 06 Oct 2011 08:08:27 +0200

Karl Tomlinson skrev 2011-10-06 01:54:
> Glenn Morris writes:
>
>> Karl Tomlinson wrote:
>>
>>> x_session_check_input in xmsfns.c has this code:
>>>
>>>    if (select (ice_fd+1,&read_fds,
>>>                (SELECT_TYPE *)0, (SELECT_TYPE *)0,&tmout)<  0)
>>>      {
>>>        ice_fd = -1;
>>>        return 0;
>>>      }
>>>
>>> So ice_fd is set to -1 when select returns due to a signal
>>> (with errno == EINTR).  This leaves the fd open but prevents
>>> further processing.
>>
>> Sorry for the delay. Is this still an issue? The current code does not
>> look like that.
>
> I haven't tested, but it looks like this should be fixed by
> http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/103065
>

It should be.  The select call in process.c is now used and it handles 
EINTR properly.

	Jan D.