classification
Title: Implementation of the PEP 446: non-inheritable file descriptors
Type: enhancement Stage:
Components: Versions: Python 3.4
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: haypo, neologix, python-dev
Priority: normal Keywords: patch

Created on 2013-07-27 15:28 by haypo, last changed 2013-09-01 08:22 by python-dev. This issue is now closed.

Files
File name Uploaded Description Edit
17211acb65b1.diff haypo, 2013-08-22 22:35 review
ca6217fbec85.diff haypo, 2013-08-27 22:28 review
Repositories containing patches
http://hg.python.org/features/pep-446
Messages (8)
msg193786 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2013-07-27 15:47
Implementation of the PEP 446.
msg194917 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2013-08-12 01:19
+    if (make_inheritable(py_fds_to_keep) < 0)
+        goto error;
+    /* errpipe_write is part of py_fds_to_keep. It must be closed at
+       exec(), but kept open in the child process until exec() is called. */
+    if (_Py_set_inheritable((int)errpipe_write, 0, NULL) < 0)
+        goto error;

make_inheritable() should ignore errpipe_write, instead of changing twice the inheritable flag of errpipe_write.
msg195674 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2013-08-19 21:41
> make_inheritable() should ignore errpipe_write, instead of changing twice the inheritable flag of errpipe_write.

Done in the last patch (00df7fc6d2ef.diff).
msg195930 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2013-08-22 22:55
I tested 17211acb65b1.diff on my x86_64 VMs:

Linux: Linux-3.9.4-200.fc18.x86_64-x86_64-with-fedora-18-Spherical_Cow
=> 358 tests OK.

OpenIndiana: Solaris-2.11-i86pc-i386-32bit-ELF
=> 3 tests failed: test_locale test_tcl test_uuid -- none of these failures are related to the PEP and also occurs in default

Mac OS X: Darwin-10.8.0-i386-64bit
=> 352 tests OK.

FreeBSD: FreeBSD-9.1-RELEASE-amd64-64bit-ELF
=> 351 tests OK.

Windows: Windows-7-6.1.7601-SP1
=> 329 tests OK

So it works on all (tested) platforms ;-)
msg196329 - (view) Author: Roundup Robot (python-dev) Date: 2013-08-27 23:20
New changeset ef889c3d5dc6 by Victor Stinner in branch 'default':
Issue #18571: Implementation of the PEP 446: file descriptors and file handles
http://hg.python.org/cpython/rev/ef889c3d5dc6
msg196349 - (view) Author: Charles-Fran├žois Natali (neologix) * (Python committer) Date: 2013-08-28 05:44
14.1 --- a/Lib/multiprocessing/util.py
    14.2 +++ b/Lib/multiprocessing/util.py

   14.13  #
   14.14  # Return pipe with CLOEXEC set on fds
   14.15  #
   14.16 +# Deprecated: os.pipe() creates non-inheritable file descriptors
   14.17 +# since Python 3.4
   14.18 +#
   14.19  
   14.20  def pipe():
   14.21 -    import _posixsubprocess
   14.22 -    return _posixsubprocess.cloexec_pipe()
   14.23 +    return os.pipe()

I guess you could remove util.pipe() altogether: it wasn't part of the public API.
msg196355 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2013-08-28 07:37
> I guess you could remove util.pipe() altogether: it wasn't part of the public API.

Ah yes, I wanted to create an issue for that but I forgot. Here you
have: issue #18865.
msg196715 - (view) Author: Roundup Robot (python-dev) Date: 2013-09-01 08:22
New changeset c27527dce71e by Victor Stinner in branch 'default':
Issue #18571: Merge duplicate test code
http://hg.python.org/cpython/rev/c27527dce71e
History
Date User Action Args
2013-09-01 08:22:51python-devsetmessages: + msg196715
2013-08-28 19:56:42haypolinkissue17036 superseder
2013-08-28 07:37:39hayposetmessages: + msg196355
2013-08-28 05:44:04neologixsetnosy: + neologix
messages: + msg196349
2013-08-27 23:21:14hayposetstatus: open -> closed
resolution: fixed
2013-08-27 23:20:54python-devsetnosy: + python-dev
messages: + msg196329
2013-08-27 22:28:16hayposetfiles: + ca6217fbec85.diff
2013-08-23 15:37:04hayposetfiles: - 775890a666bf.diff
2013-08-22 22:55:32hayposetmessages: + msg195930
2013-08-22 22:35:14hayposetfiles: + 17211acb65b1.diff
2013-08-22 00:29:44hayposetfiles: - 43697011a273.diff
2013-08-22 00:28:59hayposetfiles: + 775890a666bf.diff
2013-08-21 23:42:43hayposetfiles: - 00df7fc6d2ef.diff
2013-08-21 23:42:40hayposetfiles: - e4e6f45668c7.diff
2013-08-21 23:39:57hayposetfiles: + 43697011a273.diff
2013-08-19 21:41:20hayposetmessages: + msg195674
2013-08-19 21:10:03hayposetfiles: + 00df7fc6d2ef.diff
2013-08-12 01:19:13hayposetmessages: + msg194917
2013-08-12 01:16:32hayposetfiles: - c066794c85cd.diff
2013-08-12 01:11:00hayposetfiles: + e4e6f45668c7.diff
2013-08-12 01:10:10hayposetfiles: - 1f8979a8c2c5.diff
2013-08-12 01:08:13hayposetfiles: + 1f8979a8c2c5.diff
2013-08-09 23:12:10hayposettitle: Implementation of the PEP 446: non-inheriable file descriptors -> Implementation of the PEP 446: non-inheritable file descriptors
2013-07-28 01:21:34hayposetfiles: - 327133193321.diff
2013-07-28 01:20:03hayposetfiles: + c066794c85cd.diff
2013-07-27 17:52:29hayposetfiles: + 327133193321.diff
keywords: + patch
2013-07-27 15:47:01hayposetmessages: + msg193786
2013-07-27 15:28:59hayposethgrepos: + hgrepo205
2013-07-27 15:28:51haypocreate