Author: Armin Rigo <[email protected]>
Branch: gc-del
Changeset: r63608:603c7ac3b487
Date: 2013-04-25 17:01 +0200
http://bitbucket.org/pypy/pypy/changeset/603c7ac3b487/
Log: Trying to make sure we don't run finalizers after CPython started to
clean up modules and replace global names with None, but kind of
failing.
diff --git a/rpython/rlib/rgc.py b/rpython/rlib/rgc.py
--- a/rpython/rlib/rgc.py
+++ b/rpython/rlib/rgc.py
@@ -1,6 +1,6 @@
from __future__ import absolute_import
-import gc, weakref
+import gc, weakref, atexit
import types
import collections
@@ -347,12 +347,16 @@
_finalizer_queue.appendleft((obj, func))
break
except Exception, e:
- raise AssertionError("progress_through_finalizer_queue(): "
+ raise FinalizerError("progress_through_finalizer_queue(): "
"%s raised %s: %s" % (func,
e.__class__.__name__,
e))
_finalizer_lock.append(None)
+class FinalizerError(Exception):
+ "NOT_RPYTHON"
+atexit.register(_finalizer_queue.clear)
+
class RegisterFinalizerEntry(ExtRegistryEntry):
_about_ = register_finalizer
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit