[Python-bugs-list] [ python-Bugs-483469 ] crash on assignment in __del__ .
noreply@sourceforge.net
noreply@sourceforge.net
Mon, 19 Nov 2001 09:18:11 -0800
Bugs item #483469, was opened at 2001-11-19 07:49
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=483469&group_id=5470
Category: Python Interpreter Core
Group: Python 2.1.1
Status: Open
Resolution: None
>Priority: 4
Submitted By: Dallas T. Johnston (elaias)
Assigned to: Nobody/Anonymous (nobody)
Summary: crash on assignment in __del__ .
Initial Comment:
do the following.
>>> class C:
... def __del__(self):
... c = C()
>>> c = C()
>>> d = range(100) #anything really
>>> c = d
>>> c
Segmentation fault (core dumped)
----------------------------------------------------------------------
>Comment By: Tim Peters (tim_one)
Date: 2001-11-19 09:18
Message:
Logged In: YES
user_id=31435
Well, it's not just "an assignment": the __del__ creates a
local instance of C, which is destroyed while __del__ is
trying to return, which calls __del__ again, which creates
a local instance of C, which is destroyed while __del__ is
trying to return, which calls __del__ again, etc etc etc.
So it's roughly the same as
class C:
def __str__(self):
return str(self)
print C()
You get unbounded recursion and eventually the stack blows
up. "Don't do that" is the best advice <wink>. Reduced
priority accordingly; *maybe* Python can be changed to
detect the stack overflow and give a "maximum recursion
depth" exception instead.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=483469&group_id=5470