seg fault on asscessing undefined attr in __getattr__

Stephen Hansen news at myNOSPAM.org
Fri May 25 08:06:28 EDT 2001


"Oleg Broytmann" <phd at phd.fep.ru> wrote in message
news:mailman.990786458.26390.python-list at python.org...
> On Fri, 25 May 2001, Kong-Jei Kuan wrote:
> > hi, i am still using python 1.52, and don't know if this happens to
other
> > versions, can some verify this?
> >
> > Python 1.5.2 (#0, Dec 27 2000, 13:59:38)  [GCC 2.95.2 20000220 (Debian
GNU/Linux)] on linux2
> > Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
> > >>> class A:
> > ...   def __getattr__(self, name):
> > ...     self.x
> > ...
> > >>> a=A()
> > >>> a
> > Segmentation fault
>
>    Do you understand you've put your Python into infinite recursion?

    Uh. How is this an infinate recursion? Going strictly by the code above,
it isn't. 'a' and 'A' are entirely different objects; the former being an
instance of the latter. Further, typing 'a' by itself on the interpreter
line should reveal, '<__main__.A instance at (address)>'.. And, even if it
*was* in the middle of an infinate loop, a RuntimeError should be thrown. I
do believe a Segfault is one of those things which is "always a bug"...
although in this case, i'd imagine its not with Python itself, but with
something else which is misbehaving on KJK's machine. There's no way Python
1.5.2 should be crashing on such simple code, which hasn't actually even
_called_ '__getattr__' yet, so no errors should havebeen found ..yet.

-- Stephen
(replace 'NOSPAM' with 'seraph' to respond in email)






More information about the Python-list mailing list