Skip to content

Commit

Permalink
gh-98608: Fix Failure-handling in new_interpreter() (gh-102658)
Browse files Browse the repository at this point in the history
The error-handling code in new_interpreter() has been broken for a while.  We hadn't noticed because those code mostly doesn't fail.  (I noticed while working on gh-101660.)  The problem is that we try to clear/delete the newly-created thread/interpreter using itself, which just failed.  The solution is to switch back to the calling thread state first.

(cherry picked from commit d1b883b)

Co-authored-by: Eric Snow <[email protected]>
https: //github.com//issues/98608
  • Loading branch information
miss-islington and ericsnowcurrently authored Mar 21, 2023
1 parent e732a85 commit d5fdc3f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion Python/pylifecycle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1962,10 +1962,10 @@ new_interpreter(PyThreadState **tstate_p, int isolated_subinterpreter)

/* Oops, it didn't work. Undo it all. */
PyErr_PrintEx(0);
PyThreadState_Swap(save_tstate);
PyThreadState_Clear(tstate);
PyThreadState_Delete(tstate);
PyInterpreterState_Delete(interp);
PyThreadState_Swap(save_tstate);

return status;
}
Expand Down

0 comments on commit d5fdc3f

Please sign in to comment.