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年03月12日 15:37 by vstinner, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| sleep_eintr.patch | vstinner, 2015年03月12日 15:37 | review | ||
| sleep.py | vstinner, 2015年03月12日 15:38 | |||
| sleep_eintr-2.patch | vstinner, 2015年03月12日 15:45 | review | ||
| Messages (11) | |||
|---|---|---|---|
| msg237948 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月12日 15:37 | |
Attached patch changes time.sleep() to retry select() when select() is interrupted by a signal or retry WaitForSingleObjectEx() when the signal SIGINT is received on Windows. The patch drops support for EMX, sorry! I didn't know EMX, I had to Google it: "EMX is a free 32-bit DOS extender which adds some properties of Unix to MS-compatible DOS and IBM's OS/2 operating systems." (OS/2 support was dropped in Python 3.4 by the PEP 11.) The patch also drops support for Watcom C compiler. I guess that it's also something specific to MS-DOS or very old (and unsupported) Windows versions. select.select() is available on all platforms according to the doc, so I don't understand why we would not use it on all platforms for time.sleep() in 2015! https://docs.python.org/dev/library/select.html#select.select |
|||
| msg237949 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月12日 15:38 | |
The patch includes a unit test for POSIX. For Windows, you can test manually using the attached sleep.py program: press CTRL+c to send SIGINT signals. |
|||
| msg237952 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月12日 15:45 | |
Oh, test_signal fails with the patch because time.sleep() is not interrupted by a signal. New patch. I also reverted #ifdef order in floatsleep() to have a patch easier to review. |
|||
| msg237953 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月12日 15:46 | |
Note: test_signal will have to be modified again when select will also retry on EINTR :-) See issue #23485. For example, test_signal.test_wakeup_fd_early() can register a signal handler which raises an exception and catch InterruptedError. |
|||
| msg237959 - (view) | Author: Charles-François Natali (neologix) * (Python committer) | Date: 2015年03月12日 16:35 | |
As for the change to select/poll/etc, IIRC Guido was opposed to it, that's why I didn't update them. |
|||
| msg237983 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月12日 20:27 | |
Le jeudi 12 mars 2015, Charles-François Natali <report@bugs.python.org> a écrit : > > As for the change to select/poll/etc, IIRC Guido was opposed to it, > that's why I didn't update them. > Wait what? can you elaborate? I'm not aware of that. |
|||
| msg238269 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2015年03月17日 09:50 | |
New changeset 4accc35cbfcf by Victor Stinner in branch 'default': Revert changeset d927047b1d8eb87738676980a24930d053ba2150 https://hg.python.org/cpython/rev/4accc35cbfcf |
|||
| msg238270 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月17日 09:52 | |
I commited sleep_eintr.patch by mistake. After this change, test_socket started to fail on Windows. I don't understand why. http://buildbot.python.org/all/builders/AMD64%20Windows7%20SP1%203.x/builds/5836/steps/test/logs/stdio ====================================================================== ERROR: testClose (test.test_socket.TCPCloserTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot.python.org3円.x.kloth-win64\build\lib\test\test_socket.py", line 3723, in testClose read, write, err = select.select([sd], [], [], 1.0) TypeError: argument must be an int, or have a fileno() method. ====================================================================== FAIL: testRecv (test.test_socket.NonBlockingTCPTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot.python.org3円.x.kloth-win64\build\lib\test\test_socket.py", line 3883, in testRecv self.fail("Error trying to do non-blocking recv.") AssertionError: Error trying to do non-blocking recv. |
|||
| msg238557 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2015年03月19日 20:59 | |
New changeset b1abd06465fc by Victor Stinner in branch 'default': Issue #23646: If time.sleep() is interrupted by a signal, the sleep is now https://hg.python.org/cpython/rev/b1abd06465fc |
|||
| msg238594 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2015年03月20日 01:01 | |
New changeset 9882cc2efd36 by Victor Stinner in branch 'default': Issue #23646: Enhance precision of time.sleep() and socket timeout when https://hg.python.org/cpython/rev/9882cc2efd36 |
|||
| msg238599 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2015年03月20日 02:06 | |
New changeset 1291649f38df by Victor Stinner in branch 'default': Issue #23646: Fix test_threading on Windows https://hg.python.org/cpython/rev/1291649f38df |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:13 | admin | set | github: 67834 |
| 2015年03月20日 02:06:25 | python-dev | set | messages: + msg238599 |
| 2015年03月20日 01:01:59 | python-dev | set | messages: + msg238594 |
| 2015年03月19日 23:00:18 | vstinner | set | status: open -> closed resolution: fixed |
| 2015年03月19日 20:59:59 | python-dev | set | messages: + msg238557 |
| 2015年03月17日 09:52:08 | vstinner | set | messages: + msg238270 |
| 2015年03月17日 09:50:12 | python-dev | set | nosy:
+ python-dev messages: + msg238269 |
| 2015年03月12日 20:27:58 | vstinner | set | messages: + msg237983 |
| 2015年03月12日 16:35:18 | neologix | set | messages: + msg237959 |
| 2015年03月12日 15:51:50 | vstinner | link | issue23648 dependencies |
| 2015年03月12日 15:46:36 | vstinner | set | messages: + msg237953 |
| 2015年03月12日 15:45:09 | vstinner | set | files:
+ sleep_eintr-2.patch messages: + msg237952 |
| 2015年03月12日 15:38:31 | vstinner | set | files:
+ sleep.py messages: + msg237949 |
| 2015年03月12日 15:37:42 | vstinner | create | |