Subinterpreters don't properly clean up threads #128639
Labels
3.13
bugs and security fixes
3.14
new features, bugs and security fixes
extension-modules
C modules in the Modules dir
topic-subinterpreters
type-crash
A hard crash of the interpreter, possibly with a core dump
Crash report
What happened?
I found this issue a little while back, but I'm finally getting around to fixing it.
Currently, subinterpreter finalization assumes that there's only one thread left. So, any remaining threads--daemon or non-daemon--crash the interpreter upon finalizing:
This results in an assertion failure on my end:
So, there's a few things that need to get fixed:
Py_EndInterpreter
, which will properly clean things up.PyThreadState_Delete
. That should also happen inPy_EndInterpreter
, after all threads have finished._PyRuntimeState_SetFinalizing
has been set, meaning that all threads will be already blocked, and thus cannot shutdown viathreading._shutdown
, resulting in a deadlock.finalize_subinterpreters
should be called before that happens.CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Output from running 'python -VV' on the command line:
No response
Linked PRs
The text was updated successfully, but these errors were encountered: