mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
[3.12] gh-104690 Disallow thread creation and fork at interpreter finalization (GH-104826) (#105277)
gh-104690 Disallow thread creation and fork at interpreter finalization (GH-104826)
Disallow thread creation and fork at interpreter finalization.
in the following functions, check if interpreter is finalizing and raise `RuntimeError` with appropriate message:
* `_thread.start_new_thread` and thus `threading`
* `posix.fork`
* `posix.fork1`
* `posix.forkpty`
* `_posixsubprocess.fork_exec` when a `preexec_fn=` is supplied.
---------
(cherry picked from commit ce558e69d4
)
Co-authored-by: chgnrdv <52372310+chgnrdv@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
parent
f629d5fc24
commit
c7a9d96a25
8 changed files with 97 additions and 30 deletions
|
@ -1155,6 +1155,11 @@ thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs)
|
|||
"thread is not supported for isolated subinterpreters");
|
||||
return NULL;
|
||||
}
|
||||
if (interp->finalizing) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"can't create new thread at interpreter shutdown");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct bootstate *boot = PyMem_NEW(struct bootstate, 1);
|
||||
if (boot == NULL) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue