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 2016年09月11日 23:36 by MicroTransactionsMatterToo, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| buildlog.log | MicroTransactionsMatterToo, 2016年09月11日 23:36 | Build Log | ||
| eintr_tester.diff | MicroTransactionsMatterToo, 2016年09月12日 00:09 | |||
| issue28087.patch | ned.deily, 2016年09月12日 02:02 | |||
| smime.p7s | MicroTransactionsMatterToo, 2016年09月12日 02:03 | |||
| smime.p7s | MicroTransactionsMatterToo, 2016年09月12日 02:09 | |||
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 462 | merged | ned.deily, 2017年03月04日 10:58 | |
| PR 463 | merged | ned.deily, 2017年03月04日 11:18 | |
| PR 973 | merged | vstinner, 2017年04月03日 11:27 | |
| PR 1424 | merged | vstinner, 2017年05月03日 09:31 | |
| PR 1426 | closed | vstinner, 2017年05月03日 09:59 | |
| PR 1664 | closed | vstinner, 2017年05月19日 06:05 | |
| Messages (34) | |||
|---|---|---|---|
| msg275887 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2016年09月11日 23:36 | |
Upon calling the select.poll objects poll method with no file descriptors registered, it will return an empty list immediately, regardless of the timeout given. This is a problem in the Mac OS X kernels implementation of the poll syscall, but the test can be easily fixed by binding a throwaway socket to the poll objects, and then using the poll method as usual. Build details are attached |
|||
| msg275889 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2016年09月11日 23:52 | |
Patch exemplifying a fix for this in the test files |
|||
| msg275894 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2016年09月12日 00:09 | |
Fixed patch file, now in diff format |
|||
| msg275912 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2016年09月12日 02:02 | |
Thanks for the report. This seems to be a problem visible in the public betas of the upcoming macOS 12 release, not in previous releases (10.11 and earlier). Do you know if the problem has been reported to Apple? Also, I've uploaded a reviewable version of your patch. |
|||
| msg275913 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2016年09月12日 02:03 | |
Apple doesn’t allow access to other peoples bug reports, so I couldn’t say whether it’s been reported. Many Thanks, Ennis Massey Wet Ferret Studios <http://wet-ferret-studios.azurewebsites.net/> |
|||
| msg275914 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2016年09月12日 02:09 | |
OK, if you get a chance, it would be helpful to submit a RADAR on it and update this issue. I neglected to mention that your patch does seem to work, e.g., test_eintr no longer fails. |
|||
| msg275915 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2016年09月12日 02:09 | |
Ok, cool Many Thanks, Ennis Massey Wet Ferret Studios <http://wet-ferret-studios.azurewebsites.net/> |
|||
| msg275929 - (view) | Author: Robert Collins (rbcollins) * (Python committer) | Date: 2016年09月12日 03:06 | |
@Ned - any objection to my committing this at this point? |
|||
| msg275932 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2016年09月12日 03:09 | |
I'm not sure it should be a permanent fix. Perhaps you could add the test decorator so that it is only tested on 10.12. I don't have time to look at it more myself before b1. |
|||
| msg278623 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2016年10月13日 22:58 | |
(From https://github.com/curl/curl/issues/1057, the curl project has also seen this and opened an issue with Apple against macOS 10.12, RADAR 28372390.) |
|||
| msg288055 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2017年02月18日 05:00 | |
The failures in test_eintr and test_asyncio are confusing new contributors on Mac OS X - could we get some variant of this workaround merged until Apple fix their bug? |
|||
| msg288070 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2017年02月18日 09:48 | |
Sorry, I meant test_poll and test_asyncore as described in http://bugs.python.org/issue28456 (I misremembered due to the test_poll failure mentioning EINTR) |
|||
| msg290300 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2017年03月24日 22:55 | |
New changeset 1d391f926b37484b8d4b326003a72c0084db19ec by Ned Deily in branch '3.6': [3.6] bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS (#463) https://github.com/python/cpython/commit/1d391f926b37484b8d4b326003a72c0084db19ec |
|||
| msg290301 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2017年03月24日 22:56 | |
New changeset de04644627f82d9dc48b3423def7ff5b4aa1926a by Ned Deily in branch 'master': bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. (#462) https://github.com/python/cpython/commit/de04644627f82d9dc48b3423def7ff5b4aa1926a |
|||
| msg291065 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年04月03日 11:29 | |
test_asyncore also fails on Python 2.7 on macOS Sierra. So I proposed a backport: see my PR 973. ====================================================================== FAIL: test_handle_expt (test.test_asyncore.TestAPI_UsePoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildbot/buildarea/2.7.billenstein-sierra/build/Lib/test/test_asyncore.py", line 620, in test_handle_expt self.loop_waiting_for_flag(client) File "/Users/buildbot/buildarea/2.7.billenstein-sierra/build/Lib/test/test_asyncore.py", line 519, in loop_waiting_for_flag self.fail("flag not set") AssertionError: flag not set http://buildbot.python.org/all/builders/x86-64%20Sierra%202.7/builds/2/steps/test/logs/stdio |
|||
| msg291078 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年04月03日 16:11 | |
New changeset 23d6eb656ec29140fcca1c9261b7953e2312b171 by Victor Stinner in branch '2.7': bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. (#462) (#973) https://github.com/python/cpython/commit/23d6eb656ec29140fcca1c9261b7953e2312b171 |
|||
| msg291082 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年04月03日 16:50 | |
Ah! Python 2.7 tests succeeded on Sierra! http://buildbot.python.org/all/builders/x86-64%20Sierra%202.7/builds/3 |
|||
| msg291137 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2017年04月04日 20:17 | |
Makes sense it would also fail. They both use the same syscall. Gud job on the backport Sent from my iPhone > On 4/04/2017, at 4:50 AM, STINNER Victor <report@bugs.python.org> wrote: > > > STINNER Victor added the comment: > > Ah! Python 2.7 tests succeeded on Sierra! > > http://buildbot.python.org/all/builders/x86-64%20Sierra%202.7/builds/3 > > ---------- > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue28087> > _______________________________________ |
|||
| msg292869 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月03日 09:41 | |
Instead of skipping the test, it would be safer to not provide select.poll() if it's known to be broken. Curl added a check in configure: https://github.com/curl/curl/commit/9297ca49f5f3caca938a679b9c1feeb719e61ddb The problem is that I understood that Python provides a single binary for all supported macOS versions. So if we go for a check, it should be done as runtime, as the current select_have_broken_poll() test written for macOS. On macOS without the bug, curl check takes 0.5 second which is not ideal :-/ Would it be possible to design a test which doesn't block? |
|||
| msg292870 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月03日 09:43 | |
> Would it be possible to design a test which doesn't block? If there is no obvious way to detect poll() functionnaly, a workaround is to get the Darwin version from uname() and blacklist macOS versions known to have the bug (disable select.poll() on these versions). |
|||
| msg292875 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月03日 10:04 | |
https://github.com/python/cpython/pull/1426 implements the blacklist option. I chose the conservative approach: hope that poll() will be fixed in 16.6.x. The problem of this approach is that test_asyncore and test_eintr will fail again if Apple doesn't fix poll(). Since I would like to backport this fix in 2.7, 3.5 and 3.6 and not have to modify the code at each broken macOS release, maybe we can use the pessimistic solution: blacklist Darwin >= 16.x, and only start again to whitelist once Apple releases a fixed macOS. |
|||
| msg292876 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月03日 10:04 | |
New changeset 23b312b087582cec5cc8c528d267eb42061601ac by Victor Stinner in branch '3.5': [3.6] bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS (#463) (#1424) https://github.com/python/cpython/commit/23b312b087582cec5cc8c528d267eb42061601ac |
|||
| msg293168 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2017年05月06日 19:35 | |
Please DO NOT REMOVE select.poll() on MacOS. It is still useful. Apple needs to live with their bug that they refuse to acknowledge by forcing developers to learn the special case that it now breaks in (0 fds). We should not pretend that poll() does not exist as a result. For reference about the details of the MacOS change they were stupid enough to force upon the world, see this comment - which links to the source of their bug in the "open" source side of their OS. https://github.com/curl/curl/issues/1057#issuecomment-252286017 |
|||
| msg293169 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2017年05月06日 19:39 | |
The only thing CPython should do is apply workarounds to any standard library internal uses of poll with 0 fds guarded by a MacOS platform check. |
|||
| msg293176 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2017年05月07日 00:17 | |
Do we need to work around this issue at all? Apple appears to have fixed it already: https://github.com/opensource-apple/xnu/commit/0cccba1c831cfe36f0d67d672f8aa67b4a7d4b6a#diff-e61c2932bb9d5cea2dd0732acd8ec626R1783 A comment in https://github.com/curl/curl/issues/1057 suggests Apple has shipped that change in 10.12.2. If you still want to have Python deal with the 10.12.0 and 10.12.1 cases you could update your PR to check those versions, but given these are security fix releases as 10.12.4 is already current I think it is better to tell people just to apply their security updates and not bother with a workaround in Python. |
|||
| msg293186 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月07日 11:35 | |
You want to get poll() on macOS. I'm ok with that but I would like to see tests for it. We should remove the skip in the test. Ok, I will update my PR to just blacklist macOS 10.12.0 and 10.2.1, and reenable the test. I just have to find the Darwin versions. I don't think that we have to suggests Python users to upgrade, I expect macOS popups requesting to apply upgrades are enough ;-) |
|||
| msg293944 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2017年05月19日 00:02 | |
If the problem is fixed in 10.12.2, I agree with gps that there is no need to add a workaround for 10.12.0 and .1. We should only ever need to support the most recent macOS point release; it is the user's responsibility to keep up-to-date and with most users these days that happens automatically. |
|||
| msg293951 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月19日 06:06 | |
I abandonned PR 1426 which proposed to blacklist bogus macOS versions, and instead I proposed a new PR to simply reenable previsouly skipped tests (because of the bug which is now fixed). https://github.com/python/cpython/pull/1664 I'm unable to test my own PR right now. Ned Deily: would you mind to test it and review my change please? |
|||
| msg294269 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2017年05月23日 17:57 | |
Unfortunately, with the tests reenabled, they still fail with the most recent release of macOS 10.12 (10.12,5) so perhaps the curl issue was a different problem? |
|||
| msg294277 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年05月23日 19:14 | |
Ned Deily added the comment: > Unfortunately, with the tests reenabled, they still fail with the most recent release of macOS 10.12 (10.12,5) Oh. In that case, I will update my patch to blacklist macOS versions with the bug (remove select.poll() depending on macOS version). |
|||
| msg294304 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2017年05月24日 01:00 | |
Actually, having managed to get macOS to update, it seems to be odd, as it correctly delays. Not sure what’s going on there, or whether it’s my setup. I’ll look into it some more. I’m also thinking of writing/finding a set of tests for core POSIX stuff like this, so we can avoid Apple screwing stuff up like they have. Many Thanks, Ennis Massey ennisbaradine@gmail.com |
|||
| msg294309 - (view) | Author: Ennis Massey (MicroTransactionsMatterToo) | Date: 2017年05月24日 02:06 | |
Well, the tests worked on macOS 10.12.6 beta, although my school network broke the urllib tests Many Thanks, Ennis Massey ennisbaradine@gmail.com |
|||
| msg300128 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2017年08月10日 23:34 | |
What is the status of this issue? Is there still something to do? If you ask me my opinion, I would just suggest to remove select.poll() on macOS to stop to have to bother with poll() bugs which only trigger at runtime :-/ |
|||
| msg364527 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年03月18日 15:16 | |
No update since 2017, I close the issue. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:36 | admin | set | github: 72274 |
| 2020年03月18日 15:16:09 | vstinner | set | status: open -> closed resolution: fixed messages: + msg364527 stage: commit review -> resolved |
| 2020年03月18日 15:14:44 | vstinner | unlink | issue35691 superseder |
| 2020年03月18日 15:14:15 | vstinner | link | issue35691 superseder |
| 2017年08月10日 23:34:58 | vstinner | set | messages:
+ msg300128 versions: - Python 3.5 |
| 2017年05月24日 02:06:12 | MicroTransactionsMatterToo | set | messages: + msg294309 |
| 2017年05月24日 01:00:33 | MicroTransactionsMatterToo | set | messages: + msg294304 |
| 2017年05月23日 19:14:46 | vstinner | set | messages: + msg294277 |
| 2017年05月23日 17:57:44 | ned.deily | set | messages: + msg294269 |
| 2017年05月19日 06:06:55 | vstinner | set | messages: + msg293951 |
| 2017年05月19日 06:05:41 | vstinner | set | pull_requests: + pull_request1759 |
| 2017年05月19日 00:02:29 | ned.deily | set | messages: + msg293944 |
| 2017年05月07日 11:35:22 | vstinner | set | messages: + msg293186 |
| 2017年05月07日 00:17:48 | gregory.p.smith | set | messages:
+ msg293176 versions: + Python 2.7 |
| 2017年05月06日 19:39:39 | gregory.p.smith | set | messages: + msg293169 |
| 2017年05月06日 19:35:18 | gregory.p.smith | set | nosy:
+ gregory.p.smith messages: + msg293168 |
| 2017年05月03日 10:05:00 | vstinner | set | messages: + msg292876 |
| 2017年05月03日 10:04:15 | vstinner | set | messages: + msg292875 |
| 2017年05月03日 09:59:03 | vstinner | set | pull_requests: + pull_request1531 |
| 2017年05月03日 09:43:00 | vstinner | set | messages: + msg292870 |
| 2017年05月03日 09:41:40 | vstinner | set | messages: + msg292869 |
| 2017年05月03日 09:36:30 | vstinner | link | issue30239 superseder |
| 2017年05月03日 09:31:12 | vstinner | set | pull_requests: + pull_request1530 |
| 2017年04月04日 20:17:32 | MicroTransactionsMatterToo | set | messages: + msg291137 |
| 2017年04月03日 16:50:04 | vstinner | set | messages: + msg291082 |
| 2017年04月03日 16:11:24 | vstinner | set | messages: + msg291078 |
| 2017年04月03日 11:29:11 | vstinner | set | nosy:
+ vstinner messages: + msg291065 |
| 2017年04月03日 11:27:54 | vstinner | set | pull_requests: + pull_request1150 |
| 2017年04月01日 05:48:41 | serhiy.storchaka | set | pull_requests: - pull_request1036 |
| 2017年03月31日 16:36:30 | dstufft | set | pull_requests: + pull_request1036 |
| 2017年03月24日 22:56:07 | ned.deily | set | messages: + msg290301 |
| 2017年03月24日 22:55:14 | ned.deily | set | messages: + msg290300 |
| 2017年03月04日 11:18:15 | ned.deily | set | pull_requests: + pull_request386 |
| 2017年03月04日 10:58:59 | ned.deily | set | pull_requests: + pull_request385 |
| 2017年02月18日 09:48:34 | ncoghlan | set | messages: + msg288070 |
| 2017年02月18日 05:00:33 | ncoghlan | set | nosy:
+ ncoghlan messages: + msg288055 |
| 2016年10月16日 23:24:11 | ned.deily | link | issue28456 superseder |
| 2016年10月13日 22:58:13 | ned.deily | set | messages: + msg278623 |
| 2016年09月12日 03:09:32 | ned.deily | set | messages: + msg275932 |
| 2016年09月12日 03:06:58 | rbcollins | set | stage: patch review -> commit review |
| 2016年09月12日 03:06:50 | rbcollins | set | nosy:
+ rbcollins messages: + msg275929 |
| 2016年09月12日 02:09:36 | MicroTransactionsMatterToo | set | files:
+ smime.p7s messages: + msg275915 |
| 2016年09月12日 02:09:04 | ned.deily | set | messages: + msg275914 |
| 2016年09月12日 02:03:43 | MicroTransactionsMatterToo | set | files:
+ smime.p7s messages: + msg275913 |
| 2016年09月12日 02:02:06 | ned.deily | set | files:
+ issue28087.patch components: + Tests title: Mac OS X poll syscall returns prematurely -> macOS 12 poll syscall returns prematurely type: compile error -> versions: + Python 3.5, Python 3.7 messages: + msg275912 stage: patch review |
| 2016年09月12日 00:09:21 | MicroTransactionsMatterToo | set | files:
+ eintr_tester.diff keywords: + patch messages: + msg275894 |
| 2016年09月12日 00:07:45 | MicroTransactionsMatterToo | set | files: - eintr_tester.py |
| 2016年09月11日 23:52:04 | MicroTransactionsMatterToo | set | files:
+ eintr_tester.py messages: + msg275889 |
| 2016年09月11日 23:36:48 | MicroTransactionsMatterToo | create | |