Message339080
> Another more radical idea is to completely remove Py_TRACE_REFS special build.
I wrote PR 12614 to implement this idea. I wrote it to see which code depends on it:
commit 63509498761a0e7f72585a8cd7df325ea2abd1b2 (HEAD -> remove_trace_refs, origin/remove_trace_refs)
Author: Victor Stinner <vstinner@redhat.com>
Date: Thu Mar 28 23:26:58 2019 +0100
WIP: bpo-36465: Remove Py_TRACE_REFS special build
Remove _ob_prev and _ob_next fields of PyObject when Python is
compiled in debug mode to make debug ABI closer to the release ABI.
Remove:
* sys.getobjects()
* PYTHONDUMPREFS environment variable
* _PyCoreConfig.dump_refs
* PyObject._ob_prev and PyObject._ob_next fields
* _PyObject_HEAD_EXTRA and _PyObject_EXTRA_INIT macros
* _Py_AddToAllObjects()
* _Py_PrintReferenceAddresses()
* _Py_PrintReferences()
* _Py_ForgetReference(op) is replaced with _Py_INC_TPFREES(op)
I never used PYTHONDUMPREFS. I just tried in Python 3.7: Python does crash with this option... so this option doesn't sound popuplar. Otherwise, many users would complain.
$ PYTHONDUMPREFS=1 python3.7-dbg -c pass
...
0x7f7eae14aa90 [1] 'Thread-local dummy'
0x7f7eae19b448 [1] (<class '_thread._localdummy'>, <class 'object'>)
0x7f7eae14aa30 [1] {'__doc__': 'Thread-local dummy'}
0x7f7eae1356d8 [1] (<class 'object'>,)
0x7d0940 [2] <class '_thread._localdummy'>
0x7f7eae120d58 [1] Segmentation fault (core dumped)
I never used sys.getobjects() neither, but I can imagine that someone might want to use for very specific needs. So maybe it's safer to not immediately remove the feature. At least, a deprecation period would be needed.
I suggest to reject PR 12614 and not remove Py_TRACE_REFS. |
|
Date |
User |
Action |
Args |
2019-03-28 23:07:30 | vstinner | set | recipients:
+ vstinner, pitrou |
2019-03-28 23:07:30 | vstinner | set | messageid: <1553814450.35.0.988951298728.issue36465@roundup.psfhosted.org> |
2019-03-28 23:07:30 | vstinner | link | issue36465 messages |
2019-03-28 23:07:30 | vstinner | create | |
|