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

Reply via email to