(backport from trunk r64756)
Issue #2113: Fix error in subprocess.Popen if the select system call is
interrupted by a signal.
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 046f80c..80be087 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -1153,7 +1153,12 @@
 
             input_offset = 0
             while read_set or write_set:
-                rlist, wlist, xlist = select.select(read_set, write_set, [])
+                try:
+                    rlist, wlist, xlist = select.select(read_set, write_set, [])
+                except select.error, e:
+                    if e.args[0] == errno.EINTR:
+                        continue
+                    raise
 
                 if self.stdin in wlist:
                     # When select has indicated that the file is writable,
diff --git a/Misc/NEWS b/Misc/NEWS
index 603e847..47cb3ef 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -130,6 +130,10 @@
   argument in python 2.5, this broke code that subclassed Popen to include its
   own poll method.  Fixed my moving _deadstate to an _internal_poll method.
 
+- Issue #2113: Fix error in subprocess.Popen if the select system call is
+  interrupted by a signal.
+
+
 Extension Modules
 -----------------