New submission from Evgeny Kapun: Implementations of repr for some of the types in the standard library doesn't check for self-referential structures. As a result, when calling repr() on such objects, Python crashes due to infinite recursion.
Example: >>> import functools >>> x = functools.partial(min) >>> x.__setstate__((x, (), {}, {})) >>> repr(x) Segmentation fault Another example: >>> import xml.etree.ElementTree >>> x = xml.etree.ElementTree.Element('') >>> x.tag = x >>> repr(x) Segmentation fault One more example: >>> import io >>> class X(io.TextIOWrapper): __slots__ = 'name' >>> x = X(open('/dev/null')) >>> x.name = x >>> repr(x) Segmentation fault ---------- components: Extension Modules messages: 253309 nosy: abacabadabacaba priority: normal severity: normal status: open title: Some repr implementations don't check for self-referential structures type: crash versions: Python 3.5, Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25455> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com