Armin Rigo <arigo at tunes.org> writes: > Hello Christian, > > On Mon, Nov 17, 2003 at 02:02:48AM +0100, Christian Tismer wrote: >> I debuged this down to the very end, until I was sure >> my stuff is doing it right. Then I added a small function >> that recomputes the actual total refcounts from the >> chained list of all objects, and it turned out to be >> correct (and also my pickling), but _Py_RefTotal is different. > > I found a few places that manipulate ob_refcnt directly without > worrying about keeping _Py_RefTotal or other debugging information > in sync: Um, don't most of these places at least *try* to keep _Py_RefTotal in sync? I am aware of a few places that get this wrong, but the fixes weren't obvious to me. > * classobject.c:instance_dealloc(), for __del__ One way of getting _Py_RefTotal out of sync is resurrecting objects in __del__ methods. Another is some bizarre interaction with the trashcan machinery (don't recall what, sorry, may also be different with 2.2 vs 2.3). > * stringobject.c, for interned strings > > * typeobject.c:slot_tp_del(), for __del__ too > > I bet you could also find these easily, but maybe it should be regarded as a > bug list. I think these are bugs. > At any rate, the __del__ tricks will indeed make some counters > invalid. Which __del__ tricks specifically? Cheers, mwh -- Strangely enough I saw just such a beast at the grocery store last night. Starbucks sells Javachip. (It's ice cream, but that shouldn't be an obstacle for the Java marketing people.) -- Jeremy Hylton, 29 Apr 1997
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4