[ python-Bugs-1068268 ] subprocess is not EINTR-safe
SourceForge.net
noreply at sourceforge.net
Mon Feb 26 13:15:07 CET 2007
Bugs item #1068268, was opened at 2004-11-17 22:07
Message generated for change (Comment added) made by mpitt
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1068268&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
Status: Open
Resolution: None
Priority: 3
Private: No
Submitted By: Peter Åstrand (astrand)
Assigned to: Peter Åstrand (astrand)
Summary: subprocess is not EINTR-safe
Initial Comment:
The subprocess module is not safe for use with signals,
because it doesn't retry the system calls upon EINTR.
However, as far as I understand it, this is true for
most other Python modules as well, so it isn't obvious
that the subprocess needs to be fixed.
The problem was first noticed by John P Speno.
----------------------------------------------------------------------
Comment By: Martin Pitt (mpitt)
Date: 2007-02-26 13:15
Message:
Logged In: YES
user_id=80975
Originator: NO
I just got two different Ubuntu bug reports about this problem as well,
and I'm unsure how to circumvent this at the application level.
http://librarian.launchpad.net/6514580/Traceback.txt
http://librarian.launchpad.net/6527195/Traceback.txt
(from https://launchpad.net/bugs/87292 and its duplicate)
----------------------------------------------------------------------
Comment By: Matt Johnston (mattjohnston)
Date: 2004-12-22 08:07
Message:
Logged In: YES
user_id=785805
I've hit this on a Solaris 9 box without explicitly using
signals. Using the DCOracle module, a seperate Oracle
process is executed. When this terminates, a SIGCHLD is sent
to the calling python process, which may be in the middle of
a select() in the communicate() call, causing EINTR. From
the output of truss (like strace), a sigchld handler doesn't
appear to be getting explicitly installed by the Oracle module.
SunOS 5.9 Generic_112233-01 sun4u sparc SUNW,Sun-Fire-280R
----------------------------------------------------------------------
Comment By: Peter Åstrand (astrand)
Date: 2004-11-17 22:15
Message:
Logged In: YES
user_id=344921
One way of testing subprocess for signal-safeness is to
insert these lines just after _cleanup():
import signal
signal.signal(signal.SIGALRM, lambda x,y: 1)
signal.alarm(1)
import time
time.sleep(0.99)
Then run test_subprocess.py.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1068268&group_id=5470
More information about the Python-bugs-list
mailing list