Serhiy Storchaka <storchaka+cpyt...@gmail.com> added the comment:

Antoine give me a hint. The problem seems related to using PyDict_GetItem() 
when look up an attribute in the instance dict. It silences all exceptions 
(including RecursionError) and this results in silent "no such key in a dict".

But since 3.8 it was replaced with PyDict_GetItemWithError() which preserves 
RecursionError (see issue35459). I think we can remove 
Py_ALLOW_RECURSION/Py_END_ALLOW_RECURSION now.

As for other case in interning string, 
Py_ALLOW_RECURSION/Py_END_ALLOW_RECURSION was used to guard PyDict_GetItem(). 
But the current code uses PyDict_SetDefault() (added in 3.4) which does not 
silence errors. So Py_ALLOW_RECURSION/Py_END_ALLOW_RECURSION can be removed in 
that place too.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue41909>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to