[IronPython] object lifecycle issues

William Reade william at resolversystems.com
Mon Jul 20 18:37:47 CEST 2009


Hi all

I have two problems that are at least somewhat related:

+++ Issue 1 (probably your bug):

---------------------------------------------------------------
C:\dev\ironclad - Copy>ipy y.py
real new
stub new
real init
real del

C:\dev\ironclad - Copy>python y.py
real new
stub new
stub init
real del
---------------------------------------------------------------

I freely admit that the attached code is pretty weird, but I really do 
need to do stuff like this in Ironclad. The difference in behaviour may 
or may not be responsible for certain failing numpy/scipy tests -- I'm 
not sure how to tell -- but I'd enormously appreciate a fix.

I'd report the issue on Codeplex, but trying to visit the issue tracker 
just leaves my browser spinning forever. Speaking of which: is there any 
alternative way of reporting bugs that doesn't make me feel as if I'm 
spamming the list with out-of-band noise? I'm pretty sure that a few 
bugs have just dropped off my stack in the last few months, just because 
I got tired of waiting for Codeplex to start working.

+++ Issue 2 (almost certainly my bug):

In a nearly identical* situation -- close enough that I can't say how 
it's actually different -- f will never get its __del__ method called 
(the object is destroyed -- a WeakReference to it knows it's dead -- but 
the __del__ call never happens).

For context: I have *very* similar classes, whose instances are 
constructed in exactly the weird way demonstrated in the attached file, 
and which work fine. The only difference between the cases that work and 
the cases that don't is that the broken cases multiply inherit from ipy 
types which wrap CLR types (int and float (and maybe str, although I 
haven't tested that one)), while the working cases have simple chains of 
single inheritance from user-defined types all the way up to object. 
However, the attached repro doesn't show my problem, so it's clearly not 
*just* to do with multiply inheriting from CLR types.

Does anyone have any idea what I might be doing wrong? I know this is a 
vague request, but I'm running out of ideas, and I'd really appreciate 
some input from someone who understands precisely what all those ipy 
MetaFoo classes are doing.

Cheers
william


* the attached file started life as an attempt to repro the __del__ 
issue, and I incidentally noticed the __init__ issue.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: y.py
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20090720/d5adb779/attachment.ksh>


More information about the Ironpython-users mailing list