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 2020年09月01日 12:32 by hafizbilal100, last changed 2022年04月11日 14:59 by admin. This issue is now closed.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 23344 | merged | vstinner, 2020年11月17日 15:27 | |
| PR 23346 | merged | vstinner, 2020年11月17日 17:18 | |
| PR 23347 | merged | vstinner, 2020年11月17日 17:26 | |
| PR 23349 | merged | vstinner, 2020年11月17日 18:02 | |
| PR 23353 | merged | vstinner, 2020年11月17日 21:29 | |
| Messages (13) | |||
|---|---|---|---|
| msg376189 - (view) | Author: hafiz bilal (hafizbilal100) | Date: 2020年09月01日 12:32 | |
Hi,
time.sleep() function is not working on Windows host if I use C API Py_InitializeEx(0) function.
Issue could be reproduce with following simple example.
int main()
{
Py_InitializeEx(0);
PyRun_SimpleString("import time \n"
"start = time.time() \n"
"time.sleep(4) \n"
"print('elapsed: %d' % (time.time() - start))");
}
output:
elapsed: 0
Note, issue is not reproduce on Linux host.
|
|||
| msg376196 - (view) | Author: Eryk Sun (eryksun) * (Python triager) | Date: 2020年09月01日 15:53 | |
The SIGINT event gets created when the _signal extension module is imported. Until then, _PyOS_SigintEvent() returns NULL. But currently all code that calls _PyOS_SigintEvent() assumes it returns a valid handle. This has to be fixed to support Py_InitializeEx(0).
For example, pysleep could call WinAPI Sleep on the main thread if the interrupt event isn't configured:
ul_millis = (unsigned long)millisecs;
hInterruptEvent = _PyOS_SigintEvent();
if (ul_millis == 0 || !hInterruptEvent || !_PyOS_IsMainThread()) {
Py_BEGIN_ALLOW_THREADS
Sleep(ul_millis);
Py_END_ALLOW_THREADS
break;
}
|
|||
| msg376219 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年09月02日 09:51 | |
Py_InitializeEx() should be modified to always initialize sigint_event, even if install_sigs is equal to zero. Maybe the variable should be moved somewhere else. Maybe in the time module? |
|||
| msg376220 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年09月02日 09:52 | |
By the way, it would be nice to add error handling on: sigint_event = CreateEvent(NULL, TRUE, FALSE, FALSE); See also PR #22049. |
|||
| msg376232 - (view) | Author: Eryk Sun (eryksun) * (Python triager) | Date: 2020年09月02日 12:40 | |
> Maybe in the time module? The SIGINT event is also needed by PyOS_Readline, _io (builtin), _winapi (builtin), and _multiprocessing (pyd). Is the time module guaranteed to be imported in 3.x? It appears to get imported incidentally via _PyImportZip_Init (zipimport). Could sigint_event be relocated to a platform-dependent extension of _PyRuntimeState that gets initialized and finalized independent of any module? |
|||
| msg376265 - (view) | Author: Steve Dower (steve.dower) * (Python committer) | Date: 2020年09月02日 21:09 | |
> Could sigint_event be relocated to a platform-dependent extension of _PyRuntimeState that gets initialized and finalized independent of any module? This, or leaving it where it is and making sure it gets initialised (it really is about emulating certain signals). Either sounds fine to me. |
|||
| msg381257 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 17:15 | |
New changeset 0ae323b87f1bed64a7fa70f5a41a5800aca032cc by Victor Stinner in branch 'master': bpo-41686: Always create the SIGINT event on Windows (GH-23344) https://github.com/python/cpython/commit/0ae323b87f1bed64a7fa70f5a41a5800aca032cc |
|||
| msg381265 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 17:57 | |
New changeset cda23be092f4a72e4f335cf182f11e7bd7fd98eb by Victor Stinner in branch 'master': bpo-41686: Refactor signal_exec() (GH-23346) https://github.com/python/cpython/commit/cda23be092f4a72e4f335cf182f11e7bd7fd98eb |
|||
| msg381266 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 17:58 | |
New changeset 05a5d697f4f097f37c5c1e2ed0e2338a33c3fb6a by Victor Stinner in branch '3.9': bpo-41686: Always create the SIGINT event on Windows (GH-23344) (GH-23347) https://github.com/python/cpython/commit/05a5d697f4f097f37c5c1e2ed0e2338a33c3fb6a |
|||
| msg381286 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 21:23 | |
New changeset a702bd4b921167e73f8fc987aa64ada571fdc3f8 by Victor Stinner in branch '3.8': bpo-41686: Always create the SIGINT event on Windows (GH-23344) (GH-23347) (GH-23349) https://github.com/python/cpython/commit/a702bd4b921167e73f8fc987aa64ada571fdc3f8 |
|||
| msg381288 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 21:26 | |
Ok, the issue should now be fixed in 3.8, 3.9 and master branches. Thanks for the bug report hafiz bilal. |
|||
| msg381292 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 21:55 | |
New changeset 29aa624047f893b3b3194f00252b2156bbbf4f9b by Victor Stinner in branch 'master': bpo-41686: Move _Py_RestoreSignals() to signalmodule.c (GH-23353) https://github.com/python/cpython/commit/29aa624047f893b3b3194f00252b2156bbbf4f9b |
|||
| msg381294 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年11月17日 21:56 | |
> bpo-41686: Move _Py_RestoreSignals() to signalmodule.c (GH-23353) Sorry, this change was for bpo-41713. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:59:35 | admin | set | github: 85852 |
| 2020年11月17日 21:56:51 | vstinner | set | messages: + msg381294 |
| 2020年11月17日 21:55:39 | vstinner | set | messages: + msg381292 |
| 2020年11月17日 21:29:32 | vstinner | set | pull_requests: + pull_request22246 |
| 2020年11月17日 21:26:11 | vstinner | set | status: open -> closed resolution: fixed messages: + msg381288 stage: patch review -> resolved |
| 2020年11月17日 21:23:25 | vstinner | set | messages: + msg381286 |
| 2020年11月17日 18:02:29 | vstinner | set | pull_requests: + pull_request22242 |
| 2020年11月17日 17:58:17 | vstinner | set | messages: + msg381266 |
| 2020年11月17日 17:57:40 | vstinner | set | messages: + msg381265 |
| 2020年11月17日 17:26:41 | vstinner | set | pull_requests: + pull_request22239 |
| 2020年11月17日 17:18:16 | vstinner | set | pull_requests: + pull_request22238 |
| 2020年11月17日 17:15:29 | vstinner | set | messages: + msg381257 |
| 2020年11月17日 15:27:10 | vstinner | set | keywords:
+ patch stage: patch review pull_requests: + pull_request22235 |
| 2020年09月02日 21:09:38 | steve.dower | set | messages: + msg376265 |
| 2020年09月02日 12:40:41 | eryksun | set | messages: + msg376232 |
| 2020年09月02日 12:38:46 | eryksun | set | messages: - msg376231 |
| 2020年09月02日 12:36:33 | eryksun | set | messages: + msg376231 |
| 2020年09月02日 09:52:26 | vstinner | set | messages: + msg376220 |
| 2020年09月02日 09:51:50 | vstinner | set | messages: + msg376219 |
| 2020年09月01日 15:56:25 | vstinner | set | nosy:
+ vstinner |
| 2020年09月01日 15:53:25 | eryksun | set | versions:
+ Python 3.9, Python 3.10 nosy: + paul.moore, tim.golden, eryksun, zach.ware, steve.dower messages: + msg376196 components: + Windows type: behavior |
| 2020年09月01日 12:32:23 | hafizbilal100 | create | |