Vladimir Marangozov wrote: > > M.-A. Lemburg wrote: > > I have checked the ref counts pretty thoroughly, but before > > going public I would like the Python-Dev crowd to run some > > tests as well: after all, the point is for the weak references > > to be weak and that's sometimes a bit hard to check. > > It's even harder to implement them without side effects. I used > the same hack for the __heirs__ class attribute some time ago. > But I knew that a parent class cannot be garbage collected before > all of its descendants. That allowed me to keep weak refs in > the parent class, and preserve the existing strong refs in the > subclasses. On every dealloc of a subclass, the corresponding > weak ref in the parent class' __heirs__ is removed. > > In your case, the lifetime of the objects cannot be predicted, > so implementing weak refs by messing with refcounts or checking > mem pointers is a dead end. > I don't know whether this is the > case with mxProxy as I just browsed the code quickly, but here's > a scenario where your scheme (or implementation) is not working: > > >>> from Proxy import WeakProxy > >>> o = [] > >>> p = WeakProxy(o) > >>> d = WeakProxy(o) > >>> p > <WeakProxy object at 20260138> > >>> d > <WeakProxy object at 20261328> > >>> print p > [] > >>> print d > [] > >>> del o > >>> p > <WeakProxy object at 20260138> > >>> d > <WeakProxy object at 20261328> > >>> print p > Illegal instruction (core dumped) Could you tell me where the core dump originates ? Also, it would help to compile the package with the -DMAL_DEBUG switch turned on (edit Setup) and then run the same things using 'python -d'. The package will then print a pretty complete list of things it is doing to mxProxy.log, which would help track down errors like these. BTW, I get: >>> print p Traceback (innermost last): File "<stdin>", line 1, in ? mxProxy.LostReferenceError: object already garbage collected >>> [Don't know why the print statement prints an empty line, though.] Thanks for trying it, -- Marc-Andre Lemburg ______________________________________________________________________ Y2000: 135 days left Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/
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