SF 1055820: weakref callback vs gc vs threads

In cyclic gc, clear weakrefs to unreachable objects before allowing any
Python code (weakref callbacks or __del__ methods) to run.

This is a critical bugfix, affecting all versions of Python since weakrefs
were introduced.  I'll backport to 2.3.
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index 6da8192..02370c4 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -850,7 +850,9 @@
     return PyWeakref_GET_OBJECT(ref);
 }
 
-
+/* Note that there's an inlined copy-paste of handle_callback() in gcmodule.c's
+ * handle_weakrefs().
+ */
 static void
 handle_callback(PyWeakReference *ref, PyObject *callback)
 {