<br><br>On Saturday, October 25, 2014, Stefan Richthofer <<a href="mailto:Stefan.Richthofer@gmx.de">Stefan.Richthofer@gmx.de</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Okay, sorry, I was thinking too Jython-like. I fixed runGC() just to<br>
see now that it does not even trigger resurrection, since under<br>
CPython there are no finalizers executed in ref cycles (i.e. I find my<br>
objects in gc.garbage).<br>
So I realize, my xy_cyclic tests are pointless anyway since in cyclic<br>
gc no resurrection can happen.<br>
<br>
> The second problem (with weakref) is different: weakrefs are cleared<br>
> before __del__ is called, so resurrection doesn't affect the whole<br>
> process.<br>
It appears weakrefs are only cleared if this is done by gc (where no<br>
resurrection can happen anyway). If a resurrection-performing-__del__ is<br>
just called by ref-count-drop-to-0, weakrefs persist - a behavior that is<br>
very difficult and inefficient to emulate in Jython, but I'll give it<br>
some more thoughts...<br>
<br></blockquote><div>You shouldn't have to emulate that. The exact behavior of GC is allowed to vary between systems.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
However thanks for the help!<br>
<br>
-Stefan<br>
<br>
<br>
> Gesendet: Sonntag, 26. Oktober 2014 um 01:22 Uhr<br>
> Von: "Antoine Pitrou" <<a href="javascript:;" onclick="_e(event, 'cvml', 'solipsis@pitrou.net')">solipsis@pitrou.net</a>><br>
> An: <a href="javascript:;" onclick="_e(event, 'cvml', 'python-dev@python.org')">python-dev@python.org</a><br>
> Betreff: Re: [Python-Dev] results of id() and weakref.getweakrefs() sometimes break on object resurrection<br>
><br>
><br>
> Hello Stefan,<br>
><br>
> On Sun, 26 Oct 2014 00:20:47 +0200<br>
> "Stefan Richthofer" <<a href="javascript:;" onclick="_e(event, 'cvml', 'Stefan.Richthofer@gmx.de')">Stefan.Richthofer@gmx.de</a>> wrote:<br>
> > Hello developers,<br>
> ><br>
> > I observed strange behaviour in CPython (tested in 2.7.5 and 3.3.3)<br>
> > regarding object resurrection.<br>
><br>
> Your runGC() function is buggy, it does not run the GC under CPython.<br>
> Fix it and the first problem (with id()) disappears.<br>
><br>
> The second problem (with weakref) is different: weakrefs are cleared<br>
> before __del__ is called, so resurrection doesn't affect the whole<br>
> process. Add a callback to the weakref and you'll see it is getting<br>
> called.<br>
><br>
> In other words, CPython behaves as expected. Your concern is<br>
> appreciated, though.<br>
><br>
> Regards<br>
><br>
> Antoine.<br>
><br>
><br>
> _______________________________________________<br>
> Python-Dev mailing list<br>
> <a href="javascript:;" onclick="_e(event, 'cvml', 'Python-Dev@python.org')">Python-Dev@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-dev" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br>
> Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/stefan.richthofer%40gmx.de" target="_blank">https://mail.python.org/mailman/options/python-dev/stefan.richthofer%40gmx.de</a><br>
><br>
_______________________________________________<br>
Python-Dev mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'Python-Dev@python.org')">Python-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-dev" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/guido%40python.org" target="_blank">https://mail.python.org/mailman/options/python-dev/guido%40python.org</a><br>
</blockquote><br><br>-- <br>--Guido van Rossum (on iPad)<br>