Message357795
| Author |
vstinner |
| Recipients |
eric.snow, miss-islington, pablogsal, phsilva, vstinner |
| Date |
2019年12月04日.11:36:37 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1575459397.78.0.580978460107.issue36854@roundup.psfhosted.org> |
| In-reply-to |
| Content |
Victor> I'm not fully happy with this solution
Eric> Should we have an issue open for finding a better solution? Are there risks with what you did that we don't want long-term?
Pablo made a small changes in my workaround, by calling _PyGC_CollectNoFail() after PyInterpreterState_Clear().
https://github.com/python/cpython/pull/17457/files
I tried to avoid that, since I consider that no arbitrary Python code should be called after PyInterpreterState_Clear(), whereas the GC can trigger arbitrary __del__() methods implemented in pure Python. See discussion at https://github.com/python/cpython/pull/17457
Each time I tried to fix a bug in the Python finalization, I introduced worse bugs :-D
We cannot fix all bugs at once, we have to work incrementally. I like the idea of introducing workarounds specific to subinterpreters: leave the code path for the main interpreter unchanged. It helps to iterate on the code to slowly fix the code.
I prefer to not open an issue, since the Python finalization is broken is so many ways :-D Anyway, I'm hitting issues on the finalization each time I'm working on subinterpeter changes, so it's hard to forget about it :-)
I started to take notes at:
https://github.com/python/cpython/pull/17457/files |
|