[issue5508] maximum recursion depth exceeded in __subclasscheck__
ganges master
report at bugs.python.org
Wed Mar 18 16:25:51 CET 2009
New submission from ganges master <gangesmaster at users.sourceforge.net>:
this is similar to bug #5370, but this for is a different reason. also,
i have seen several sites on google that mention it, so it has happened
to quite a few people.
the bug is that when calling dir() on a object, it looks for __members__
and __methods__, which might not exist, thus invoking __getattr__ (if it
exists).
if __getattr__ fails, say, due to a never ending recusion, the exception
is silently swallowed. this was the behavior in py2.5. since 2.6, it
emits a warning (that looks like PyErr_WriteUnraisable) with the
strangest message:
Exception RuntimeError: 'maximum recursion depth exceeded in
__subclasscheck__' in <type 'exceptions.AttributeError'> ignored
this is very confusing. either dir() raises this exception, or silently
ignore it, but displaying this message is only confusing.
i haven't been able to detect why this happens:
* the source of this exception, merge_list_attr, calls PyErr_Clear
* nobody seems to call PyErr_WriteUnraisable
here's a snippet:
class Foo(object):
def __getattr__(self, name):
return self.x # which will recursively call __getattr__
>>> f = Foo()
>>> print dir(f)
Exception RuntimeError: 'maximum recursion depth exceeded in
__subclasscheck__' in <type 'exceptions.AttributeError'> ignored
Exception RuntimeError: 'maximum recursion depth exceeded in
__subclasscheck__' in <type 'exceptions.AttributeError'> ignored
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattr__', '__getattribute__', '__hash__', '__init__', '__module__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '__weakref__']
----------
components: Interpreter Core
messages: 83752
nosy: gangesmaster, georg.brandl
severity: normal
status: open
title: maximum recursion depth exceeded in __subclasscheck__
type: behavior
versions: Python 2.6
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue5508>
_______________________________________
More information about the Python-bugs-list
mailing list