mirror of
https://github.com/python/cpython.git
synced 2025-11-01 14:11:41 +00:00
gh-134144: Fix use-after-free in zapthreads() (#134145)
This commit is contained in:
parent
0a160bf14c
commit
f2de1e6861
4 changed files with 41 additions and 6 deletions
|
|
@ -1908,9 +1908,14 @@ tstate_delete_common(PyThreadState *tstate, int release_gil)
|
|||
static void
|
||||
zapthreads(PyInterpreterState *interp)
|
||||
{
|
||||
PyThreadState *tstate;
|
||||
/* No need to lock the mutex here because this should only happen
|
||||
when the threads are all really dead (XXX famous last words). */
|
||||
_Py_FOR_EACH_TSTATE_UNLOCKED(interp, tstate) {
|
||||
when the threads are all really dead (XXX famous last words).
|
||||
|
||||
Cannot use _Py_FOR_EACH_TSTATE_UNLOCKED because we are freeing
|
||||
the thread states here.
|
||||
*/
|
||||
while ((tstate = interp->threads.head) != NULL) {
|
||||
tstate_verify_not_active(tstate);
|
||||
tstate_delete_common(tstate, 0);
|
||||
free_threadstate((_PyThreadStateImpl *)tstate);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue