[Python-checkins] cpython: Backout 62658d9d8926 (issue #10241): it causes a crash at shutdown when

antoine.pitrou python-checkins at python.org
Fri Aug 2 20:40:41 CEST 2013


http://hg.python.org/cpython/rev/314a872f54e1
changeset:   84979:314a872f54e1
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Fri Aug 02 20:39:46 2013 +0200
summary:
  Backout 62658d9d8926 (issue #10241): it causes a crash at shutdown when deallocating a Tkapp object.

files:
  Include/pystate.h |   3 ---
  Misc/NEWS         |   3 ---
  Python/import.c   |   2 --
  Python/pystate.c  |  25 -------------------------
  4 files changed, 0 insertions(+), 33 deletions(-)


diff --git a/Include/pystate.h b/Include/pystate.h
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -134,9 +134,6 @@
 PyAPI_FUNC(int) PyState_RemoveModule(struct PyModuleDef*);
 #endif
 PyAPI_FUNC(PyObject*) PyState_FindModule(struct PyModuleDef*);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyState_ClearModules(void);
-#endif
 
 PyAPI_FUNC(PyThreadState *) PyThreadState_New(PyInterpreterState *);
 PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *);
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,9 +12,6 @@
 
 - Issue #17899: Fix rare file descriptor leak in os.listdir().
 
-- Issue #10241: Clear extension module dict copies at interpreter shutdown.
-  Patch by Neil Schemenauer, minimally modified.
-
 - Issue #9035: ismount now recognises volumes mounted below a drive root
   on Windows. Original patch by Atsuo Ishimoto.
 
diff --git a/Python/import.c b/Python/import.c
--- a/Python/import.c
+++ b/Python/import.c
@@ -380,8 +380,6 @@
     builtins = interp->builtins;
     interp->builtins = PyDict_New();
     Py_DECREF(builtins);
-    /* Clear module dict copies stored in the interpreter state */
-    _PyState_ClearModules();
     /* Collect references */
     _PyGC_CollectNoFail();
     /* Dump GC stats before it's too late, since it uses the warnings
diff --git a/Python/pystate.c b/Python/pystate.c
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -320,31 +320,6 @@
     return PyList_SetItem(state->modules_by_index, index, Py_None);
 }
 
-/* used by import.c:PyImport_Cleanup */
-void
-_PyState_ClearModules(void)
-{
-    PyInterpreterState *state = PyThreadState_GET()->interp;
-    if (state->modules_by_index) {
-        Py_ssize_t i;
-        for (i = 0; i < PyList_GET_SIZE(state->modules_by_index); i++) {
-            PyObject *m = PyList_GET_ITEM(state->modules_by_index, i);
-            if (PyModule_Check(m)) {
-                /* cleanup the saved copy of module dicts */
-                PyModuleDef *md = PyModule_GetDef(m);
-                if (md)
-                    Py_CLEAR(md->m_base.m_copy);
-            }
-        }
-        /* Setting modules_by_index to NULL could be dangerous, so we
-           clear the list instead. */
-        if (PyList_SetSlice(state->modules_by_index,
-                            0, PyList_GET_SIZE(state->modules_by_index),
-                            NULL))
-            PyErr_WriteUnraisable(state->modules_by_index);
-    }
-}
-
 void
 PyThreadState_Clear(PyThreadState *tstate)
 {

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list