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 2019年05月06日 18:45 by eric.snow, last changed 2022年04月11日 14:59 by admin. This issue is now closed.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 13129 | merged | eric.snow, 2019年05月06日 18:47 | |
| PR 13795 | merged | vstinner, 2019年06月04日 00:59 | |
| Messages (9) | |||
|---|---|---|---|
| msg341595 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2019年05月06日 18:45 | |
Currently we use the _PyRuntime static global to access the runtime state in various places. At the same time, in thread contexts we get access to the thread state from Thread-Local Storage and the interpreter state by indirection from there. We should do the same for the runtime state instead of using the global directly. My plan is to add a PyInterpreterState.runtime field. It can then be used in the same way we use PyThreadState.interp to access the interpreter state. |
|||
| msg342043 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年05月10日 02:20 | |
I don't see the point of PyInterpreterState.runtime: * I understood that we should have and only one _PyRuntimeState instance: _PyRuntime. Why not accessing it directly? * I understood that most _PyRuntimeState fields should be moved to PyInterpreterState. Once this refactoring will be done, we will almost never have to access _PyRuntime. |
|||
| msg342134 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年05月10日 21:22 | |
Eric is working on a different approach: https://bugs.python.org/issue36854 |
|||
| msg344142 - (view) | Author: Eric Snow (eric.snow) * (Python committer) | Date: 2019年06月01日 03:16 | |
New changeset 396e0a8d9dc65453cb9d53500d0a620602656cfe by Eric Snow in branch 'master': bpo-36818: Add PyInterpreterState.runtime field. (gh-13129) https://github.com/python/cpython/commit/396e0a8d9dc65453cb9d53500d0a620602656cfe |
|||
| msg344513 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年06月04日 01:15 | |
New changeset 0fd2c300c2a85b3b227a907b2a39ef79fa86d850 by Victor Stinner in branch 'master': Revert "bpo-36818: Add PyInterpreterState.runtime field. (gh-13129)" (GH-13795) https://github.com/python/cpython/commit/0fd2c300c2a85b3b227a907b2a39ef79fa86d850 |
|||
| msg344514 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年06月04日 01:19 | |
This change introduced a regression: https://bugs.python.org/issue37135#msg344511 I had to revert the change to fix Python for 3.8 beta1 release. |
|||
| msg344515 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年06月04日 01:21 | |
By the way, I have questions about the rationale of this change. > Currently we use the _PyRuntime static global to access the runtime state in various places. At the same time, in thread contexts we get access to the thread state from Thread-Local Storage and the interpreter state by indirection from there. We should do the same for the runtime state instead of using the global directly. Right now I'm confused. _PyRuntimeState contains scatted states: things which should be moved to PyInterpreterState or even PyThreadState, and things which should remain in _PyRuntimeState. My notes on this topic: https://pythoncapi.readthedocs.io/runtime.html Is PyInterpreterState.runtime a temporary fix until things are moved? Or do you plan to never access _PyRuntime directly, and always through interp->runtime? It seems like in the short term, we must continue to access "_PyRuntime" through a separated "runtime" pointer passed to functions, to handle daemon threads during Python shutdown. |
|||
| msg344558 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年06月04日 12:46 | |
See https://bugs.python.org/issue37135#msg344509 to reproduce https://bugs.python.org/issue37135 crash without multiprocessing: with this procedure, I reproduce the crash immediately on Linux. No need for a magic super slow buildbot. |
|||
| msg363789 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2020年03月09日 23:28 | |
I added PyInterpreterState.runtime in bpo-36710: commit 01b1cc12e7c6a3d6a3d27ba7c731687d57aae92a Author: Victor Stinner <vstinner@python.org> Date: Wed Nov 20 02:27:56 2019 +0100 bpo-36710: Add PyInterpreterState.runtime field (GH-17270) Add PyInterpreterState.runtime field: reference to the _PyRuntime global variable. This field exists to not have to pass runtime in addition to tstate to a function. Get runtime from tstate: tstate->interp->runtime. Remove "_PyRuntimeState *runtime" parameter from functions already taking a "PyThreadState *tstate" parameter. _PyGC_Init() first parameter becomes "PyThreadState *tstate". -- > This change introduced a regression: > https://bugs.python.org/issue37135#msg344511 Funny/not funny, I introduced the same bug and I fixed it in bpo-39877. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:59:14 | admin | set | github: 80999 |
| 2020年03月09日 23:28:59 | vstinner | set | status: open -> closed resolution: fixed messages: + msg363789 |
| 2019年06月04日 12:46:06 | vstinner | set | messages: + msg344558 |
| 2019年06月04日 01:21:32 | vstinner | set | messages: + msg344515 |
| 2019年06月04日 01:19:05 | vstinner | set | status: closed -> open resolution: fixed -> (no value) messages: + msg344514 |
| 2019年06月04日 01:15:11 | vstinner | set | messages: + msg344513 |
| 2019年06月04日 00:59:06 | vstinner | set | pull_requests: + pull_request13680 |
| 2019年06月01日 04:30:17 | eric.snow | set | resolution: rejected -> fixed |
| 2019年06月01日 03:16:52 | eric.snow | set | messages: + msg344142 |
| 2019年05月10日 21:22:11 | vstinner | set | status: open -> closed resolution: rejected messages: + msg342134 stage: patch review -> resolved |
| 2019年05月10日 02:20:18 | vstinner | set | messages: + msg342043 |
| 2019年05月06日 18:47:38 | eric.snow | set | keywords:
+ patch pull_requests: + pull_request13042 |
| 2019年05月06日 18:45:44 | eric.snow | create | |