Message 93863 - Python tracker
As mentioned in issue7060, weak dict iterators are easily broken by cyclic garbage collection changing the size of the underlying dict storage: File "/home/rdmurray/python/py3k/Lib/weakref.py", line 121, in items for wr in self.data.values(): RuntimeError: dictionary changed size during iteration One possible solution is to delay all removals until all iterators are done. Here is a context manager-based solution.