]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
Provide a sanity check during PyThreadState_DeleteCurrent() and
authorGregory P. Smith <greg@mad-scientist.com>
Mon, 21 Jan 2008 07:11:11 +0000 (07:11 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Mon, 21 Jan 2008 07:11:11 +0000 (07:11 +0000)
commit2778c999e39142b6e2f092028e0b05ef29bdb901
treeec8cf8ac43b5a475ff2c370463431d86341be122
parent21297fa621509d3497508c044e0fcc024977eb9a
Provide a sanity check during PyThreadState_DeleteCurrent() and
PyThreadState_Delete() to avoid an infinite loop when the tstate list
is messed up and has somehow becomes circular and does not contain the
current thread.

I don't know how this happens but it does, *very* rarely.  On more than
one hardware platform.  I have not been able to reproduce it manually.

Attaching to a process where its happening: it has always been in an
infinite loop over a single element tstate list that is not the tstate
we're looking to delete.  It has been in t_bootstrap()'s call to
PyThreadState_DeleteCurrent() as a pthread is exiting.
Python/pystate.c