[Python-Dev] stack check on Unix: any suggestions? (original) (raw)

Guido van Rossum guido@beopen.com
Thu, 31 Aug 2000 11:30:48 -0500


> Please try this again on various platforms with this version: > > i = 0 > class C: > def getattr(self, name): > global i > print i > i += 1 > return self.name # common beginners' mistake > > C() # This tries to get init, triggering the recursion > > I get 5788 iterations on Red Hat Linux 6.2 (ulimit -c says 8192; I > have no idea what units).

8192 refers to kB, i.e. 8 MB. I get 6053 on SuSE Linux 6.2 without resource stack limit set. Strange enough if I put the above inside a script, the class isn't instantiated. The recursion only starts when I manually trigger C() in interactive mode or do something like 'print C()'. Is this a bug or a feature ?

Aha. I was wrong -- it's happening in repr(), not during construction.

--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)