classification
Title: Solaris: EINTR exception in select/socket calls in telnetlib
Type: behavior Stage: test needed
Components: Library (Lib) Versions: Python 2.6
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: jackdied Nosy List: brauwerman, jackdied (2)
Priority: normal Keywords:

Created on 2004-10-18 17:39 by brauwerman, last changed 2009-04-01 16:21 by jackdied.

Messages (2)
msg60587 - (view) Author: Mike Brauwerman (brauwerman) Date: 2004-10-18 17:39
On Solaris, calls to select.select() and
socket.socket() in telnetlib (and possibly others)
often fail due to unhandled EINTR signals from the OS
while select() is polling.

I think this problem is Solaris-specific since Solaris
has interruptible non-restartable sytem calls.

This behavior is apparently a known issue with the
system API select(); see
  man -s3c select
and
http://lists.community.tummy.com/pipermail/frpythoneers/2000-August/000122.html

The recommend fix from frpythoneers is to wrap the
select (and socket, respectively) calls in a loop:

while True:
  try:
    select.select(...)
    break
  except select.error, v:
    if v[0] == errno.EINTR: continue
    else:        raise 


It's probably more appropriate to put the
exception-handling *inside* select.select (and
socket.socket) but that's beyond my expertise...


OS: SunOS 5.9 Generic_112233-11 sun4u sparc
SUNW,Sun-Blade-100
msg85037 - (view) Author: Jack Diederich (jackdied) Date: 2009-04-01 16:21
assigning all open telnetlib items to myself
History
Date User Action Args
2009-04-01 16:21:06jackdiedsetassignee: jackdied

messages: + msg85037
nosy: + jackdied
2009-02-14 18:19:39ajaksu2setstage: test needed
type: behavior
versions: + Python 2.6, - Python 2.3
2004-10-18 17:39:51brauwermancreate