This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2015年04月02日 15:13 by ced, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| fd_dir.patch | ced, 2015年04月02日 15:13 | review | ||
| max_fd.patch | ced, 2015年04月03日 18:24 | review | ||
| max_fd.patch | ced, 2015年04月04日 14:25 | review | ||
| max_fd.patch | worr, 2015年04月24日 20:48 | review | ||
| Messages (17) | |||
|---|---|---|---|
| msg239920 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月02日 15:13 | |
The test_subprocess fails since issue21618 on OpenBSD because the FD_DIR is wrong (/dev/fd instead of /proc/self/fd). |
|||
| msg240002 - (view) | Author: Stefan Krah (skrah) * (Python committer) | Date: 2015年04月03日 15:31 | |
There's a comment in _posixsubprocess: "NetBSD and OpenBSD have a /proc fs available (though not necessarily mounted) and do not have fdescfs for /dev/fd." Is this still valid? |
|||
| msg240005 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月03日 15:53 | |
At least on OpenBSD procfs have been removed: http://www.openbsd.org/faq/current.html#20140908 |
|||
| msg240013 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2015年04月03日 17:33 | |
I'm not going to bother setting up a VM with an esoteric OS in it myself, if someone knows the past and current state of various OpenBSD versions and what to do there, feel free to commit OpenBSD conditional compilation bits as you see fit to make this do the right thing. :) |
|||
| msg240017 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月03日 17:50 | |
Indeed, I think my patch is not right as /dev/fd on OpenBSD is static. I will continue to investigate. |
|||
| msg240020 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月03日 18:11 | |
The problem comes from safe_get_max_fd which return a too low value because of a bug in sysconf on OpenBSD [1]: The value for _SC_STREAM_MAX is a minimum maximum, and required to be the same as ANSI C's FOPEN_MAX, so the returned value is a ridiculously small and misleading number. [1] http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man3/sysconf.3 |
|||
| msg240023 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月03日 18:24 | |
Here is a patch that uses getrlimit (that's works on OpenBSD) before using sysconf. |
|||
| msg240068 - (view) | Author: Stefan Krah (skrah) * (Python committer) | Date: 2015年04月04日 12:54 | |
Unfortunately I don't have an OpenBSD install either. From the sysconf.c source ... http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/lib/libc/gen/sysconf.c?rev=1.22&content-type=text/plain ... it seems that sysconf(_SC_OPEN_MAX) also calls getrlimit(). |
|||
| msg240075 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月04日 14:24 | |
But sysconf(_SC_OPEN_MAX) uses rlim_cur which is too low instead of rlim_max. My proposal is indeed describe in msg219477, it is not prefect but at least better than the current one for OpenBSD. |
|||
| msg240076 - (view) | Author: Cédric Krier (ced) * | Date: 2015年04月04日 14:25 | |
Correctly cast to long instead of int. |
|||
| msg240619 - (view) | Author: William Orr (worr) * | Date: 2015年04月13日 15:10 | |
Tested on OpenBSD 5.6/amd64. lgtm. |
|||
| msg240772 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2015年04月13日 21:46 | |
getrlimit() is not an async-signal-safe function according to http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html so you cannot call it from safe_get_max_fd(). having the getrlimit call done prior to the fork and using the value returned by that iff neither of the other two methods (fcntl and sysconf) are available or produced results seems like the best you can do. also, rlim_t is an unsigned value yet the existing code in this module is using signed values for the file descriptors. realistically i do not expect an rlim_t for max file descriptors to ever be > MAX_LONG as many file descriptor API calls require signed values for fds in order to use -1 as an error. But checking the value for overflow and against the RLIM constants mentioned in http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/resource.h.html before casting it via (long) seems pedantically wise. |
|||
| msg240929 - (view) | Author: William Orr (worr) * | Date: 2015年04月14日 16:12 | |
Given that OpenBSD returns *bad* data via sysconf(3), I'm not sure that there's a good way to validate other than *only* calling getrlimit(3) on OpenBSD. Is that an acceptable approach? |
|||
| msg241035 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2015年04月14日 21:43 | |
yeah, that's fine. just surround the call to getrlimit with appropriate openbsd ifdef's and a comment. it is _probably_ async signal safe given the nature of the function in most implementations even though it isn't on the official posix list (many things are). |
|||
| msg241394 - (view) | Author: William Orr (worr) * | Date: 2015年04月18日 03:47 | |
I've updated Cédric's patch to only run that portion on OpenBSD. |
|||
| msg241982 - (view) | Author: William Orr (worr) * | Date: 2015年04月24日 20:48 | |
Updated the patch based on review |
|||
| msg242047 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2015年04月26日 06:44 | |
New changeset 7df280b311d0 by Gregory P. Smith in branch '3.4': Fix computation of max_fd on OpenBSD. Issue #23852. https://hg.python.org/cpython/rev/7df280b311d0 New changeset 08d0cc23fb00 by Gregory P. Smith in branch 'default': Fix computation of max_fd on OpenBSD. Issue #23852. https://hg.python.org/cpython/rev/08d0cc23fb00 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:15 | admin | set | github: 68040 |
| 2015年04月26日 09:19:49 | berker.peksag | set | stage: patch review -> resolved |
| 2015年04月26日 06:47:00 | gregory.p.smith | set | status: open -> closed resolution: fixed |
| 2015年04月26日 06:44:20 | python-dev | set | nosy:
+ python-dev messages: + msg242047 |
| 2015年04月24日 20:48:18 | worr | set | files:
+ max_fd.patch messages: + msg241982 |
| 2015年04月24日 20:48:00 | worr | set | files: - max_fd.patch |
| 2015年04月18日 03:47:42 | worr | set | files:
+ max_fd.patch messages: + msg241394 |
| 2015年04月14日 21:43:30 | gregory.p.smith | set | messages: + msg241035 |
| 2015年04月14日 16:12:38 | worr | set | messages: + msg240929 |
| 2015年04月13日 21:46:02 | gregory.p.smith | set | messages: + msg240772 |
| 2015年04月13日 15:10:28 | worr | set | nosy:
+ worr messages: + msg240619 |
| 2015年04月04日 14:25:52 | ced | set | files:
+ max_fd.patch messages: + msg240076 |
| 2015年04月04日 14:24:43 | ced | set | messages: + msg240075 |
| 2015年04月04日 12:54:39 | skrah | set | messages: + msg240068 |
| 2015年04月04日 10:02:12 | ced | set | files: - max_fd.patch |
| 2015年04月04日 10:02:00 | ced | set | files:
+ max_fd.patch title: Wrong FD_DIR file name on OpenBSD -> Wrong computation of max_fd on OpenBSD |
| 2015年04月03日 18:31:15 | ced | set | type: behavior |
| 2015年04月03日 18:24:09 | ced | set | files:
+ max_fd.patch messages: + msg240023 |
| 2015年04月03日 18:11:17 | ced | set | type: behavior -> (no value) messages: + msg240020 |
| 2015年04月03日 17:50:56 | ced | set | messages: + msg240017 |
| 2015年04月03日 17:33:18 | gregory.p.smith | set | versions:
+ Python 3.4, Python 3.5 messages: + msg240013 components: + Extension Modules type: behavior stage: patch review |
| 2015年04月03日 15:53:15 | ced | set | messages: + msg240005 |
| 2015年04月03日 15:32:10 | skrah | set | nosy:
+ gregory.p.smith |
| 2015年04月03日 15:31:15 | skrah | set | nosy:
+ skrah messages: + msg240002 |
| 2015年04月02日 16:09:12 | davin | set | nosy:
+ davin |
| 2015年04月02日 15:13:52 | ced | create | |