GNU bug report logs -
#3225
session manager hang due to block on ice_fd (failure to check for EINTR in select)
Previous Next
Full log
View this message in rfc822 format
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.
>
> ksmserver then blocks on this connection and so other apps opening
> an ICE connection also block during start-up.
>
> The simple solution that I have tested is to only set ice_fd to -1
> when errno != EINTR. x_session_check_input can still return early
> in this situation as it will be called again in the future.
>
> (Perhaps ice_fd never needs to be set to -1 here. I don't know if
> there is ever a good reason why is should be set to -1.)
>
>
> In GNU Emacs 22.3.1 (x86_64-pc-linux-gnu, GTK+ Version 2.12.11)
> of 2009-01-16 on blackhawk
Sorry for the delay. Is this still an issue? The current code does not
look like that.
This bug report was last modified 13 years and 292 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.