mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
gh-109746: Make _thread.start_new_thread delete state of new thread on its startup failure (GH-109761)
If Python fails to start newly created thread due to failure of underlying PyThread_start_new_thread() call, its state should be removed from interpreter' thread states list to avoid its double cleanup. Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
a264637654
commit
ca3ea9ad05
4 changed files with 39 additions and 1 deletions
|
@ -421,6 +421,7 @@ ThreadHandle_start(ThreadHandle *self, PyObject *func, PyObject *args,
|
|||
PyThread_handle_t os_handle;
|
||||
if (PyThread_start_joinable_thread(thread_run, boot, &ident, &os_handle)) {
|
||||
PyThreadState_Clear(boot->tstate);
|
||||
PyThreadState_Delete(boot->tstate);
|
||||
thread_bootstate_free(boot, 1);
|
||||
PyErr_SetString(ThreadError, "can't start new thread");
|
||||
goto start_failed;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue