[Stackless] Re: [Python-Dev] _Py_RefTotal wrong in Py 2.2.3
Michael Hudson
mwh at python.net
Mon Nov 17 12:40:27 EST 2003
"Tim Peters" <tim at zope.com> writes:
> [Michael Hudson]
>> ...
>> One way of getting _Py_RefTotal out of sync is resurrecting objects in
>> __del__ methods.
>
> Oops! That's right:
[snip evidence]
This is also why running test_descr in a loop still bumps
sys.gettotalrefcount() by 3 or so each time.
> /* If Py_REF_DEBUG, the original decref dropped _Py_RefTotal,
> * but _Py_NewReference bumped it again, so that's a wash.
>
> Heh. If you ignore the new reference(s) that resurrected the thing, I
> suppose that would be true. It should (2.3.2) do
>
> _Py_DEC_REFTOTAL;
>
> to make up for the extra increment done by _Py_NewReference; likewise in
> slot_tp_del (BTW, the macro expands to nothing if Py_REF_DEBUG isn't
> defined).
Is it that easy? I remember fooling a little with this, but not
successfully. It's just possible <wink> that I got confused, though.
(Confused by finalizer issues? How could that be?)
FWIW, my foolings were with new-style objects -- but from what you say
in another post, it's unsurprising to find isomorphic problems with
old-style classes (as in your example).
Cheers,
mwh
--
Java is a WORA language! (Write Once, Run Away)
-- James Vandenberg (on progstone at egroups.com)
& quoted by David Rush on comp.lang.scheme
More information about the Python-Dev
mailing list