cpython/Python
Gregory P. Smith d868be8805 Adds a sanity check to avoid a *very rare* infinite loop due to a corrupt tls
key list data structure in the thread startup path.

This change is a companion to r60148 which already successfully dealt with a
similar issue on thread shutdown.

In particular this loop has been observed happening from this call path:
 #0  in find_key ()
 #1  in PyThread_set_key_value ()
 #2  in _PyGILState_NoteThreadState ()
 #3  in PyThreadState_New ()
 #4  in t_bootstrap ()
 #5  in pthread_start_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.
(A flaky mutex implementation on the system in question is one hypothesis).

As with r60148, the spinning we managed to observe in the wild was due to a
single list element pointing back upon itself.
2008-08-04 07:33:37 +00:00
..
Python-ast.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
_warnings.c #3342: In tracebacks, printed source lines were not indented since r62555. 2008-07-11 21:45:06 +00:00
asdl.c Merge in release25-maint r60793: 2008-06-11 07:41:16 +00:00
ast.c Issue #3360: Fix incorrect parsing of "020000000000.0". 2008-07-16 09:40:03 +00:00
atof.c Patch #411138: Rename config.h to pyconfig.h. Closes bug #231774. 2001-07-26 13:41:06 +00:00
bltinmodule.c #3479: unichr(2**32) used to return u'\x00'. 2008-07-31 21:28:03 +00:00
ceval.c Raymond's patch for #1819: speedup function calls with named parameters 2008-07-25 22:13:52 +00:00
codecs.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
compile.c Merge in release25-maint r60793: 2008-06-11 07:41:16 +00:00
dup2.c Mass ANSIfication of function definitions. Doesn't cover all 'extern' 2000-07-22 18:47:25 +00:00
dynload_aix.c Fix SF bug #1072182, problems with signed characters. 2005-12-19 06:05:18 +00:00
dynload_atheos.c Patch #488073: AtheOS port. 2002-06-11 06:22:31 +00:00
dynload_beos.c Fix for 2002-01-23 15:51:12 +00:00
dynload_dl.c Use PyOS_snprintf instead of sprintf. 2001-11-28 20:42:20 +00:00
dynload_hpux.c Oops, I forgot to include this file in the last commit (46046): 2006-05-19 07:05:01 +00:00
dynload_next.c Fix for 838140: don't call NSUnlinkModule when we fail to find our 2004-07-15 22:28:48 +00:00
dynload_os2.c Use PyOS_snprintf instead of sprintf. 2001-11-28 20:42:20 +00:00
dynload_shlib.c Fix a warning from gcc by adding a missed const qualifier. 2006-01-04 01:30:17 +00:00
dynload_stub.c REMOVED all CWI, CNRI and BeOpen copyright markings. 2000-09-01 23:29:29 +00:00
dynload_win.c Applied #1069410 2008-01-23 17:15:06 +00:00
errors.c #2542: now that issubclass() may call arbitrary code, 2008-07-31 00:42:16 +00:00
formatter_string.c Refactor and clean up str.format() code (and helpers) in advance of optimizations. 2008-05-30 18:10:04 +00:00
formatter_unicode.c Refactor and clean up str.format() code (and helpers) in advance of optimizations. 2008-05-30 18:10:04 +00:00
frozen.c This is my patch 2002-08-15 14:59:02 +00:00
frozenmain.c Patch #569753: Remove support for WIN16. 2002-06-30 15:26:10 +00:00
future.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
getargs.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
getcompiler.c The GCC version is loooooooooong; put it on a new line. 2000-09-05 04:40:39 +00:00
getcopyright.c More copyright year and version number bumps 2008-03-01 03:15:20 +00:00
getcwd.c Define MAXPATHLEN to be at least PATH_MAX, if that's defined. Python uses 2006-04-25 15:29:46 +00:00
getmtime.c spread the extern "C" { } magic pixie dust around. Python itself builds now 2006-04-13 02:06:09 +00:00
getopt.c Improve -X error message. 2008-04-13 20:50:29 +00:00
getplatform.c REMOVED all CWI, CNRI and BeOpen copyright markings. 2000-09-01 23:29:29 +00:00
getversion.c Use PyOS_snprintf instead of sprintf. 2001-11-28 20:42:20 +00:00
graminit.c #2627 Let it be known what pgen generates 2008-04-13 20:35:56 +00:00
import.c Fix issue 3221 by emitting a RuntimeWarning instead of raising SystemError when the parent module can't be found during an absolute import (likely due to non-PEP 361 aware code which sets a module level __package__ attribute) 2008-07-13 14:52:36 +00:00
importdl.c Patch #794826: Add __file__ in dynamically loaded modules for multiple 2003-09-04 18:45:59 +00:00
importdl.h PEP 302 + zipimport: 2002-12-30 22:08:05 +00:00
mactoolboxglue.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
marshal.c Issue 3116: fix quadratic behavior in marshal.dumps(). 2008-06-16 01:42:40 +00:00
modsupport.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
mysnprintf.c Fix issue2588: Do not execute str[size-1] = '\0' when a 0 size is 2008-05-26 22:07:28 +00:00
mystrtoul.c Revert r61969 which added casts to Py_CHARMASK to avoid compiler warnings. 2008-03-28 04:58:51 +00:00
peephole.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
pyarena.c Fix more memory allocation issues found with failmalloc. 2006-07-22 16:20:49 +00:00
pyfpe.c Patch #411138: Rename config.h to pyconfig.h. Closes bug #231774. 2001-07-26 13:41:06 +00:00
pymath.c I finally got the time to update and merge Mark's and my trunk-math branch. The patch is collaborated work of Mark Dickinson and me. It was mostly done a few months ago. The patch fixes a lot of loose ends and edge cases related to operations with NaN, INF, very small values and complex math. 2008-04-18 23:13:07 +00:00
pystate.c Adds a sanity check to avoid a *very rare* infinite loop due to a corrupt tls 2008-08-04 07:33:37 +00:00
pystrcmp.c Remove compiler warnings (on Alpha at least) about using chars as 2008-03-23 06:19:57 +00:00
pystrtod.c Fix issue 3411: default float format spec fails on negative numbers. 2008-07-19 00:24:05 +00:00
pythonrun.c #3378: in case of no memory, don't leak even more memory. :) 2008-07-19 10:08:55 +00:00
sigcheck.c REMOVED all CWI, CNRI and BeOpen copyright markings. 2000-09-01 23:29:29 +00:00
strdup.c Mass ANSIfication of function definitions. Doesn't cover all 'extern' 2000-07-22 18:47:25 +00:00
strtod.c Remove unnecessary curly braces around an int literal. 2008-02-07 08:04:07 +00:00
structmember.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
symtable.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
sysmodule.c Added garbage collector overhead and optional default return value to 2008-07-10 17:13:55 +00:00
thread.c Adds a sanity check to avoid a *very rare* infinite loop due to a corrupt tls 2008-08-04 07:33:37 +00:00
thread_atheos.h Patch #488073: AtheOS port. 2002-06-11 06:22:31 +00:00
thread_beos.h Remove the unused & broken PyThread_*_sema() functions and related constants. 2002-01-19 22:02:55 +00:00
thread_cthread.h Remove the unused & broken PyThread_*_sema() functions and related constants. 2002-01-19 22:02:55 +00:00
thread_foobar.h Remove the unused & broken PyThread_*_sema() functions and related constants. 2002-01-19 22:02:55 +00:00
thread_lwp.h Remove the unused & broken PyThread_*_sema() functions and related constants. 2002-01-19 22:02:55 +00:00
thread_nt.h Fix problems in x64 build that were discovered by the testsuite: 2007-05-03 20:27:03 +00:00
thread_os2.h bugfix: PyThread_start_new_thread() returns the thread ID, not a flag; 2006-07-23 13:00:04 +00:00
thread_pth.h Patch #805613: Fix usage of the PTH library. 2003-09-20 11:13:36 +00:00
thread_pthread.h Patch #1454481: Make thread stack size runtime tunable. 2006-06-13 15:04:24 +00:00
thread_sgi.h Remove support for DYNIX, IRIX 4, --with-sgi-dl, --with-dl-dld 2004-01-17 04:04:13 +00:00
thread_solaris.h Patch #716969: Detect thread creation failure. Will backport to 2.2. 2003-04-19 07:44:52 +00:00
thread_wince.h bug 1234979 addition 2005-07-09 15:26:33 +00:00
traceback.c #3342: In tracebacks, printed source lines were not indented since r62555. 2008-07-11 21:45:06 +00:00