Skip to content

Commit

Permalink
Issue python#10363: Deallocate global locks in Py_Finalize().
Browse files Browse the repository at this point in the history
  • Loading branch information
pitrou committed Oct 30, 2011
1 parent e0aa803 commit 8db076c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 10 deletions.
2 changes: 2 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ What's New in Python 3.2.3?
Core and Builtins
-----------------

- Issue #10363: Deallocate global locks in Py_Finalize().

- Issue #13018: Fix reference leaks in error paths in dictobject.c.
Patch by Suman Saha.

Expand Down
25 changes: 15 additions & 10 deletions Python/import.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,16 +252,6 @@ _PyImportHooks_Init(void)
Py_DECREF(path_hooks);
}

void
_PyImport_Fini(void)
{
Py_XDECREF(extensions);
extensions = NULL;
PyMem_DEL(_PyImport_Filetab);
_PyImport_Filetab = NULL;
}


/* Locking primitives to prevent parallel imports of the same module
in different threads to return with a partially loaded module.
These calls are serialized by the global interpreter lock. */
Expand Down Expand Up @@ -374,6 +364,21 @@ imp_release_lock(PyObject *self, PyObject *noargs)
return Py_None;
}

void
_PyImport_Fini(void)
{
Py_XDECREF(extensions);
extensions = NULL;
PyMem_DEL(_PyImport_Filetab);
_PyImport_Filetab = NULL;
#ifdef WITH_THREAD
if (import_lock != NULL) {
PyThread_free_lock(import_lock);
import_lock = NULL;
}
#endif
}

static void
imp_modules_reloading_clear(void)
{
Expand Down
6 changes: 6 additions & 0 deletions Python/pystate.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,12 @@ PyInterpreterState_Delete(PyInterpreterState *interp)
*p = interp->next;
HEAD_UNLOCK();
free(interp);
#ifdef WITH_THREAD
if (interp_head == NULL && head_mutex != NULL) {
PyThread_free_lock(head_mutex);
head_mutex = NULL;
}
#endif
}


Expand Down

0 comments on commit 8db076c

Please sign in to comment.